Browse Source

Updated outgoing email template

Samson Mutunga 3 năm trước cách đây
mục cha
commit
1bc9195672

+ 6 - 0
app/Http/Controllers/HomeController.php

@@ -29,6 +29,7 @@ use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Cookie;
 use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Facades\Http;
+use App\Models\OutgoingEmailTemplate;
 
 class HomeController extends Controller
 {
@@ -2066,4 +2067,9 @@ WHERE measurement.label NOT IN ('SBP', 'DBP')
         }
         return view('app.generic-bills.inline', ['class' => 'p-3 border-top mt-3', 'entityType' => $entityType, 'entityUid' => $entityUid, 'patient' => $patient]);
     }
+
+    public function outgoingEmailTemplates(Request $request){
+        $templates = OutgoingEmailTemplate::where('is_active', true)->orderBy('default_subject_tpl', 'ASC')->get();
+        return $this->pass($templates);
+    }
 }

+ 11 - 0
app/Models/OutgoingEmailTemplate.php

@@ -0,0 +1,11 @@
+<?php
+
+namespace App\Models;
+
+# use Illuminate\Database\Eloquent\Model;
+
+class OutgoingEmailTemplate extends Model
+{
+    protected $table = 'outgoing_email_template';
+
+}

+ 87 - 32
resources/views/app/patient/send_email.blade.php

@@ -1,33 +1,88 @@
-<div moe wide  center class="ml-auto">
-    <a show href="" start>Send Email</a>
-    <form url="/api/imail/create">
-        <input type="hidden" name="clientUid" value="{{ $patient->uid }}">
+<div class="d-inline" id="outgoingEmailTemplate">
+    <div moe wide center class="ml-auto">
+        <a show href="" start>Send Email</a>
+        <form url="/api/imail/create">
+            <div id="outgoingEmailTemplateComponent" v-cloak>
+                <input type="hidden" name="clientUid" value="{{ $patient->uid }}">
 
-        <div class="form-group">
-            <label for="" class="control-label">From Email</label>
-            <select name="fromEmailAddress" class="form-control input-sm">
-                <option value="carelink@leadershiphealth.org">carelink@leadershiphealth.org</option>
-            </select>
-        </div>
-        <div class="form-group">
-            <label for="" class="control-label">From Name</label>
-            <input class="form-control input-sm" type="text" name="fromName" >
-        </div>
-        <div class="form-group">
-            <label for="" class="control-label">To Email</label>
-            <input class="form-control input-sm" type="email" name="toEmailAddress" value="{{$patient->email_address}}" >
-        </div>
-        <div class="form-group">
-            <label for="" class="control-label">Subject</label>
-            <input class="form-control input-sm" type="text" name="subject" >
-        </div>
-        <div class="form-group">
-            <label for="" class="control-label">Body</label>
-            <textarea rte class="form-control " name="htmlBody"></textarea>
-        </div> 
-        <div class="form-group">
-            <button class="btn btn-primary btn-sm" submit>Submit</button>
-            <button class="btn btn-primary btn-sm" cancel>Cancel</button>
-        </div>
-    </form>
-</div>
+                <div class="form-group">
+                    <label for="" class="control-label">Ougoing Email Template</label>
+                    <select name="fromEmailAddress" class="form-control input-sm" @change="setTemplate">
+                        <option value=""></option>
+                        <option v-for="(template,i) in templates" v-bind:value="i">@{{ template.default_subject_tpl }}</option>
+                    </select>
+                </div>
+
+                <div class="form-group">
+                    <label for="" class="control-label">From Email</label>
+                    <input type="email" name="fromEmailAddress" class="form-control input-sm" v-model="template.default_from_email" />
+                </div>
+                <div class="form-group">
+                    <label for="" class="control-label">From Name</label>
+                    <input class="form-control input-sm" type="text" name="fromName" v-model="template.default_from_name">
+                </div>
+                <div class="form-group">
+                    <label for="" class="control-label">To Email</label>
+                    <input class="form-control input-sm" type="email" name="toEmailAddress" value="{{$patient->email_address}}">
+                </div>
+                <div class="form-group">
+                    <label for="" class="control-label">Subject</label>
+                    <input class="form-control input-sm" type="text" name="subject" v-model="template.default_subject_tpl">
+                </div>
+                <div class="form-group">
+                    <label for="" class="control-label">Body</label>
+                    <textarea rte class="form-control " name="htmlBody" v-model="template.default_message_body_tpl"></textarea>
+                </div>
+            </div>
+            <div class="form-group">
+                <button class="btn btn-primary btn-sm" submit>Submit</button>
+                <button class="btn btn-primary btn-sm" cancel>Cancel</button>
+            </div>
+        </form>
+    </div>
+</div>
+
+
+<script>
+    (function() {
+        function init() {
+            var outgoingEmailTemplate = new Vue({
+                el: '#outgoingEmailTemplateComponent',
+                data: {
+                    templates:[],
+                    template:{
+                        default_from_email:'carelink@leadershiphealth.org'
+                    },
+                    fromEmailAddresses:[
+                        'carelink@leadershiphealth.org'
+                    ]
+                },
+                methods: {
+                    setTemplate: function(evt){
+                        var self = this;
+                        var input = evt.target;
+                        var value = parseInt(evt.target.value);
+                        if(isNaN(value)){
+                            self.template = {};
+                            return;
+                        }
+                        self.template = self.templates[value];
+                    },
+                    loadOugoingEmailTemplates: function(){
+                        var self = this;
+                        $.get("{{ route('outgoingEmailTemplates') }}", {}, function(response){
+                            self.templates = response.data;
+                        }, 'json');
+                    },
+                    init: function() {
+                        this.loadOugoingEmailTemplates();
+                    }
+                },
+                mounted: function() {
+                    this.init();
+                }
+            });
+        }
+        addMCInitializer('outgoingEmailTemplate', init);
+    })();
+</script>

+ 1 - 1
routes/web.php

@@ -643,5 +643,5 @@ Route::post("/process_form_submit", 'NoteController@processFormSubmit')->name('p
 Route::get("/get-default-section-data/{patientID}/{sectionTemplateID}", 'NoteController@getDefaultValueForSection')->name('get_default_section_data');
 
 Route::get("/get-segment-html/{segmentUid}/{sessionKey}", 'NoteController@getHtmlForSegment')->name('get_segment_html');
-
+Route::get("/ougoing-email-templates", 'HomeController@outgoingEmailTemplates')->name('outgoingEmailTemplates');
 Route::any("/nop", 'HomeController@nop')->name('nop');