Merge database and mail fields

This commit is contained in:
Jovan Jovanovic 2021-08-03 22:46:58 +02:00
parent 0597b4aabe
commit a19cbb1575
3 changed files with 49 additions and 96 deletions

View file

@ -167,28 +167,28 @@ class UserController extends Controller
*/
public function notify(Request $request, User $user)
{
$via = $request->validate([
$data = $request->validate([
"via" => "required|min:1|array",
"via.*" => "required|string|in:mail,database",
])["via"];
"title" => "required|string|min:1",
"content" => "required|string|min:1"
]);
$mail = null;
$database = null;
if (in_array('database', $via)) {
$database = $request->validate([
"title" => "required|string|min:1",
"content" => "required|string|min:1"
]);
if (in_array('database', $data["via"])) {
$database = [
"title" => $data["title"],
"content" => $data["content"]
];
}
if (in_array('mail', $via)) {
$data = $request->validate([
"subject" => "required|string|min:1",
"body" => "required|string|min:1"
]);
$mail = (new MailMessage)->subject($data["subject"])->line(new HtmlString($data["body"]));
if (in_array('mail', $data["via"])) {
$mail = (new MailMessage)
->subject($data["title"])
->line(new HtmlString($data["content"]));
}
$user->notify(
new DynamicNotification($via, $database, $mail)
new DynamicNotification($data["via"], $database, $mail)
);
return redirect()->route('admin.users.notifications', $user->id)->with('success', 'User notified!');
}

View file

@ -61,24 +61,24 @@ class NotificationController extends Controller
$discordUser = DiscordUser::find($userId);
$user = $discordUser ? $discordUser->user : User::findOrFail($userId);
$via = $request->validate([
"via" => ["required", new Delimited("in:mail,database")]
$data = $request->validate([
"via" => ["required", new Delimited("in:mail,database")],
"title" => "required|string|min:1",
"content" => "required|string|min:1"
]);
$via = explode(',', $via["via"]);
$via = explode(',', $data["via"]);
$mail = null;
$database = null;
if (in_array('database', $via)) {
$database = $request->validate([
"title" => "required|string|min:1",
"content" => "required|string|min:1"
]);
$database = [
"title" => $data["title"],
"content" => $data["content"]
];
}
if (in_array('mail', $via)) {
$data = $request->validate([
"subject" => "required|string|min:1",
"body" => "required|string|min:1"
]);
$mail = (new MailMessage)->subject($data["subject"])->line(new HtmlString($data["body"]));
$mail = (new MailMessage)
->subject($data["title"])
->line(new HtmlString($data["content"]));
}
$user->notify(
new DynamicNotification($via, $database, $mail)

View file

@ -36,13 +36,11 @@
<div class="form-group">
<label>Send via</label><br>
<input value="database" id="database" name="via[]"
type="checkbox"
onchange="toggleGroup('database-group')">
type="checkbox">
<label for="database">Database</label>
<br>
<input value="mail" id="mail" name="via[]"
type="checkbox"
onchange="toggleGroup('mail-group')">
type="checkbox">
<label for="mail">Mail</label>
@error('via')
<div class="invalid-feedback d-block">
@ -51,61 +49,30 @@
@enderror
</div>
<div class="d-none" id="database-group">
<div class="form-group" >
<label for="title">Title</label>
<input value="{{old('title')}}" id="title" name="title"
type="text"
class="form-control @error('title') is-invalid @enderror">
@error('title')
<div class="invalid-feedback">
{{$message}}
</div>
@enderror
</div>
<div class="form-group">
<label for="content">Content</label>
<textarea id="content"
name="content"
type="content"
class="form-control @error('content') is-invalid @enderror">
{{old('content')}}
</textarea>
@error('content')
<div class="text-danger">
{{$message}}
</div>
@enderror
<div class="form-group" >
<label for="title">Title</label>
<input value="{{old('title')}}" id="title" name="title"
type="text"
class="form-control @error('title') is-invalid @enderror">
@error('title')
<div class="invalid-feedback">
{{$message}}
</div>
@enderror
</div>
<div class="d-none" id="mail-group">
<div class="form-group">
<label for="subject">Subject</label>
<input value="{{old('subject')}}" id="subject" name="subject"
type="text"
class="form-control @error('subject') is-invalid @enderror">
@error('subject')
<div class="invalid-feedback">
{{$message}}
</div>
@enderror
</div>
<div class="form-group">
<label for="body">Body</label>
<textarea id="body"
name="body"
type="body"
class="form-control @error('body') is-invalid @enderror">
{{old('body')}}
</textarea>
@error('body')
<div class="text-danger">
{{$message}}
</div>
@enderror
<div class="form-group">
<label for="content">Content</label>
<textarea id="content"
name="content"
type="content"
class="form-control @error('content') is-invalid @enderror">
{{old('content')}}
</textarea>
@error('content')
<div class="text-danger">
{{$message}}
</div>
@enderror
</div>
<div class="form-group text-right">
<button type="submit" class="btn btn-primary">Submit</button>
@ -122,20 +89,6 @@
<script>
document.addEventListener('DOMContentLoaded', (event) => {
// Summernote
$('#body').summernote({
height: 100,
toolbar: [
[ 'style', [ 'style' ] ],
[ 'font', [ 'bold', 'italic', 'underline', 'strikethrough', 'superscript', 'subscript', 'clear'] ],
[ 'fontname', [ 'fontname' ] ],
[ 'fontsize', [ 'fontsize' ] ],
[ 'color', [ 'color' ] ],
[ 'para', [ 'ol', 'ul', 'paragraph', 'height' ] ],
[ 'table', [ 'table' ] ],
[ 'insert', [ 'link'] ],
[ 'view', [ 'undo', 'redo', 'fullscreen', 'codeview', 'help' ] ]
]
})
$('#content').summernote({
height: 100,
toolbar: [