Mødebooking

Error compiling template "/Designs/Vestjylland/Paragraph/BookMeetingCampaignsAdmin.cshtml"
Line 50: 'IRequest' does not contain a definition for 'Files' and no accessible extension method 'Files' accepting a first argument of type 'IRequest' could be found (are you missing a using directive or an assembly reference?)
Line 52: 'IRequest' does not contain a definition for 'Files' and no accessible extension method 'Files' accepting a first argument of type 'IRequest' could be found (are you missing a using directive or an assembly reference?)
Line 54: 'IRequest' does not contain a definition for 'Files' and no accessible extension method 'Files' accepting a first argument of type 'IRequest' could be found (are you missing a using directive or an assembly reference?)
Line 56: 'IRequest' does not contain a definition for 'Files' and no accessible extension method 'Files' accepting a first argument of type 'IRequest' could be found (are you missing a using directive or an assembly reference?)
Line 59: 'IRequest' does not contain a definition for 'Files' and no accessible extension method 'Files' accepting a first argument of type 'IRequest' could be found (are you missing a using directive or an assembly reference?)
Line 62: 'IRequest' does not contain a definition for 'Files' and no accessible extension method 'Files' accepting a first argument of type 'IRequest' could be found (are you missing a using directive or an assembly reference?)
Line 71: 'IResponse.Redirect(string)' is obsolete: 'Do not use'

1 // <auto-generated/> 2 #pragma warning disable 1591 3 namespace CompiledRazorTemplates.Dynamic 4 { 5 #line hidden 6 using System.Threading.Tasks; 7 using System.Collections.Generic; 8 using System.Linq; 9 using System; 10 using System.Web; 11 using System.IO; 12 using System.Data; 13 using Dynamicweb.Rendering; 14 using Dynamicweb.Data; 15 using Vestjylland.Helpers; 16 using Dynamicweb.Content.Items; 17 using System.Net; 18 using Dynamicweb; 19 internal class RazorEngine_19fbf2bae65a43c6b99a835a49a74398 : Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 20 { 21 #pragma warning disable 1998 22 public async override global::System.Threading.Tasks.Task ExecuteAsync() 23 { 24 WriteLiteral("\r\n\r\n"); 25 26 //init reps and apis 27 Vestjylland.Repository.BookMeetingSlotsRepository bookMeetingSlotsRepository = new Vestjylland.Repository.BookMeetingSlotsRepository(); 28 Vestjylland.Repository.BookMeetingBookingsRepository bookMeetingBookingsRepository = new Vestjylland.Repository.BookMeetingBookingsRepository(); 29 Vestjylland.Api.BookMeeting bookMeetingApi = new Vestjylland.Api.BookMeeting(); 30 31 //get all filters 32 var filters = bookMeetingApi.GetMeetingCandidateFilters(); 33 Vestjylland.Api.MeetingCandidateFilter filterSelected = null; 34 35 //init vars 36 IEnumerable<Vestjylland.Api.MeetingCandidateList> list = null; 37 string filterQuery = Dynamicweb.Core.Converter.ToString(Context.Current.Request.QueryString["filter"]); 38 List<string> meetingUserIdErrors = new List<string>(); 39 string meetingUserIdsPost = ""; 40 string meetingFromTimePost = ""; 41 string meetingToTimePost = ""; 42 int meetingDaysAddedPost = 0; 43 string meetingTemplatePost = ""; 44 45 IEnumerable<Vestjylland.Api.EmailTemplates> emailTemplates = null; 46 47 //upload file if needed 48 dynamic resultUpload = null; 49 dynamic flashUploadJsonResponse = (dynamic)Dynamicweb.Context.Current.Session["flashUploadMeeting"] ?? null; 50 if (Context.Current.Request.Files.Count > 0) 51 { 52 var test = Context.Current.Request.Files[0]; 53 byte[] fileData = null; 54 using (var binaryReader = new BinaryReader(Context.Current.Request.Files[0].InputStream)) 55 { 56 fileData = binaryReader.ReadBytes(Context.Current.Request.Files[0].ContentLength); 57 } 58 59 if (fileData != null && !String.IsNullOrEmpty(Context.Current.Request.Files[0].FileName)) 60 { 61 string base64StringUpload = Convert.ToBase64String(fileData, 0, fileData.Length); 62 resultUpload = bookMeetingApi.PostUploadExcel(base64StringUpload, Context.Current.Request.Files[0].FileName); 63 64 Context.Current.Session["flashUploadMeeting"] = resultUpload; 65 66 string redirectLink = "/Default.aspx?ID=" + Pageview.Page.ID; 67 if (resultUpload["Success"] == "true") 68 { 69 redirectLink = redirectLink + "&filter=" + resultUpload["CreatedListId"]; 70 } 71 Dynamicweb.Context.Current.Response.Redirect(redirectLink); 72 } 73 } 74 75 76 //lets do the magic 77 if (!String.IsNullOrEmpty(filterQuery)) 78 { 79 list = bookMeetingApi.GetMeetingCandidateList(filterQuery); 80 emailTemplates = bookMeetingApi.GetEmailTemplates(); 81 82 //if asked for, update DB with new bookings and send it to CRM 83 meetingUserIdsPost = Dynamicweb.Core.Converter.ToString(Context.Current.Request.Form["meeting_user_id"]); 84 meetingFromTimePost = Dynamicweb.Core.Converter.ToString(Context.Current.Request.Form["timefrom"]); 85 meetingToTimePost = Dynamicweb.Core.Converter.ToString(Context.Current.Request.Form["timeto"]); 86 meetingDaysAddedPost = Dynamicweb.Core.Converter.ToInt32(Context.Current.Request.Form["daysadded"]); 87 meetingTemplatePost = Dynamicweb.Core.Converter.ToString(Context.Current.Request.Form["template"]); 88 89 if (!String.IsNullOrEmpty(meetingUserIdsPost)) 90 { 91 string[] meetingUserIds = meetingUserIdsPost.Split(','); 92 foreach (string meetingUserId in meetingUserIds) 93 { 94 95 bool error = false; 96 97 //insert into DB first 98 var booking = bookMeetingBookingsRepository.CreateByFirstSlotAvailable(meetingUserId, meetingFromTimePost, meetingToTimePost, meetingTemplatePost, meetingDaysAddedPost); 99 if (booking.BookID > 0) 100 { 101 //send to crm 102 string meetingId = bookMeetingApi.PostCreateMeetingEmail(meetingUserId, booking.BookID.ToString(), booking.BookTime, meetingTemplatePost); 103 104 //update db booking with reference 105 if (!String.IsNullOrEmpty(meetingId)) 106 { 107 bookMeetingBookingsRepository.UpdateMeetingID(booking.BookID, meetingId); 108 } 109 else 110 { 111 error = true; 112 } 113 114 } 115 else 116 { 117 error = true; 118 meetingUserIdErrors.Add(meetingUserId); 119 } 120 121 if (error) 122 { 123 meetingUserIdErrors.Add(meetingUserId); 124 } 125 } 126 } 127 } 128 WriteLiteral("\r\n<div class=\"container\">\r\n"); 129 if (String.IsNullOrEmpty(filterQuery)) 130 { 131 WriteLiteral(" <form method=\"post\" class=\"form-inline\""); 132 BeginWriteAttribute("action", " action=\"", 5106, "\"", 5115, 0); 133 EndWriteAttribute(); 134 WriteLiteral(@" enctype=""multipart/form-data""> 135 <div class=""form-group""> 136 <label>Upload liste:</label> 137 <input type=""file"" name=""file_list"" /> 138 <button type=""submit"" class=""btn btn-primary""> 139 Upload &nbsp;<i class=""far fa-chevron-right""></i> 140 </button> 141 </div> 142 </form> 143 "); 144 WriteLiteral(" <hr />\r\n <br />\r\n"); 145 146 } 147 WriteLiteral("\r\n"); 148 if (flashUploadJsonResponse != null) 149 { 150 WriteLiteral(" <div class=\"alert-success\" style=\"margin-top: 20px;\">\r\n <p>Medlemmer success: "); 151 Write(flashUploadJsonResponse["CreatedAccounts"].Count); 152 WriteLiteral(" </p>\r\n"); 153 if (flashUploadJsonResponse["NotCreatedAccounts"].Count > 0) 154 { 155 WriteLiteral(" <p>\r\n Medlemmer fejl:<br />\r\n"); 156 foreach (var accountError in flashUploadJsonResponse["NotCreatedAccounts"]) 157 { 158 WriteLiteral(" <span>Kundenummer:</span> "); 159 Write(accountError["AccountNumber"]); 160 WriteLiteral(" <span>-</span> "); 161 Write(accountError["ErrorMessage"]); 162 WriteLiteral(" <br />\r\n"); 163 164 } 165 WriteLiteral(" </p>\r\n"); 166 } 167 WriteLiteral(" </div>\r\n"); 168 Context.Current.Session["flashUploadMeeting"] = null; 169 } 170 WriteLiteral("\r\n <form method=\"get\""); 171 BeginWriteAttribute("class", " class=\"", 6318, "\"", 6326, 0); 172 EndWriteAttribute(); 173 BeginWriteAttribute("action", " action=\"", 6327, "\"", 6336, 0); 174 EndWriteAttribute(); 175 WriteLiteral(">\r\n <div class=\"form-group\">\r\n <label>M&oslash;dekandidat filter:</label> &nbsp;\r\n <p>\r\n <select name=\"filter\" class=\"form-control\">\r\n <option"); 176 BeginWriteAttribute("value", " value=\"", 6542, "\"", 6550, 0); 177 EndWriteAttribute(); 178 WriteLiteral(">-- V&aelig;lg liste --</option>\r\n"); 179 foreach (var filter in filters) 180 { 181 string selected = ""; 182 if (filter.Id == filterQuery) 183 { 184 selected = "selected"; 185 filterSelected = filter; 186 } 187 WriteLiteral(" <option"); 188 BeginWriteAttribute("value", " value=\"", 6955, "\"", 6973, 1); 189 WriteAttributeValue("", 6963, filter.Id, 6963, 10, false); 190 EndWriteAttribute(); 191 WriteLiteral(" "); 192 Write(selected); 193 WriteLiteral(">"); 194 Write(filter.Name); 195 WriteLiteral(" ("); 196 Write(filter.Description); 197 WriteLiteral(")</option>\r\n"); 198 } 199 WriteLiteral(@" </select> 200 </p> 201 202 <button tabindex=""4"" type=""submit"" class=""btn btn-primary""> 203 Hent personer &nbsp;<i class=""far fa-chevron-right""></i> 204 </button> 205 </div> 206 </form> 207 <br /> 208 209 "); 210 if (list != null) 211 { 212 WriteLiteral(" <div class=\"col-xs-12\">\r\n <hr />\r\n <h2>Udsend til disse personer</h2>\r\n"); 213 if (filterSelected != null) 214 { 215 WriteLiteral(" <p>"); 216 Write(filterSelected.Description); 217 WriteLiteral("</p>\r\n"); 218 } 219 WriteLiteral("\r\n <form method=\"post\""); 220 BeginWriteAttribute("action", " action=\"", 7613, "\"", 7622, 0); 221 EndWriteAttribute(); 222 WriteLiteral(@" class=""book-meeting-admin__slotsform""> 223 <div class=""table-responsive""> 224 <table class=""table table-bordered table-striped""> 225 <thead> 226 <tr> 227 <td>Navn</td> 228 <td>E-mail</td> 229 <td>V&aelig;lg <input type=""checkbox"" name=""meeting_user_all"" id=""meeting_user_all"" checked /></td> 230 </tr> 231 </thead> 232 "); 233 foreach (var listItem in list) 234 { 235 string classNotice = ""; 236 if (!String.IsNullOrEmpty(meetingUserIdsPost)) 237 { 238 string[] meetingUserIds = meetingUserIdsPost.Split(','); 239 if (meetingUserIds.Contains(listItem.Id)) 240 { 241 classNotice = meetingUserIdErrors.Contains(listItem.Id) ? "alert-danger" : "alert-success"; 242 } 243 244 } 245 246 WriteLiteral(" <tr"); 247 BeginWriteAttribute("class", " class=\"", 8824, "\"", 8844, 1); 248 WriteAttributeValue("", 8832, classNotice, 8832, 12, false); 249 EndWriteAttribute(); 250 WriteLiteral(">\r\n <td>"); 251 Write(listItem.Name); 252 WriteLiteral("</td>\r\n <td>"); 253 Write(listItem.Email); 254 WriteLiteral("</td>\r\n <td><input type=\"checkbox\" name=\"meeting_user_id\" class=\"meeting_user_id\""); 255 BeginWriteAttribute("value", " value=\"", 9068, "\"", 9088, 1); 256 WriteAttributeValue("", 9076, listItem.Id, 9076, 12, false); 257 EndWriteAttribute(); 258 WriteLiteral(" checked /></td>\r\n </tr>\r\n"); 259 260 } 261 WriteLiteral(" </table>\r\n </div>\r\n\r\n"); 262 if (String.IsNullOrEmpty(meetingUserIdsPost)) 263 { 264 WriteLiteral(@" <div class=""row"">&nbsp;</div> 265 <div class=""row""> 266 <div class=""col-3""> 267 <label>Antal dage inden tid kan gives</label> 268 <input type=""number"" class=""form-control"" name=""daysadded"" placeholder=""Antal dage"" tabindex=""3"" value=""14""> 269 </div> 270 <div class=""col-3""> 271 <label>Fra tid (hh:mm)</label> 272 <input type=""text"" class=""form-control"" name=""timefrom"" placeholder=""Fra tid"" tabindex=""3"" value=""08:00""> 273 </div> 274 <div class=""col-3""> 275 <label>Til tid (hh:mm)</label> 276 <input type=""text"" class=""form-control"" name=""timeto"" placeholder=""Til tid"" tabindex=""3"" value=""18:00""> 277 </div> 278 <div class=""col-3""> 279 <label>Mailskabelon</label> 280 "); 281 WriteLiteral(" <select class=\"form-control\" name=\"template\" tabindex=\"3\" required>\r\n <option"); 282 BeginWriteAttribute("value", " value=\"", 10470, "\"", 10478, 0); 283 EndWriteAttribute(); 284 WriteLiteral(">-- Vælg skabelon --</option>\r\n"); 285 foreach (var template in emailTemplates) 286 { 287 WriteLiteral(" <option"); 288 BeginWriteAttribute("value", " value=\"", 10663, "\"", 10696, 1); 289 WriteAttributeValue("", 10671, template.EmailTemplateId, 10671, 25, false); 290 EndWriteAttribute(); 291 WriteLiteral(">"); 292 Write(template.Name); 293 WriteLiteral("</option>\r\n"); 294 } 295 WriteLiteral(@" </select> 296 </div> 297 <div class=""col-3""> 298 <label>&nbsp;</label> 299 <button tabindex=""4"" type=""submit"" class=""btn btn-primary"">Udsend &nbsp;<i class=""far fa-chevron-right""></i></button> 300 </div> 301 </div> 302 <div class=""row"">&nbsp;</div> 303 "); 304 } 305 WriteLiteral(" </form>\r\n </div>\r\n"); 306 } 307 WriteLiteral("</div>"); 308 } 309 #pragma warning restore 1998 310 } 311 } 312 #pragma warning restore 1591 313

1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 2 @using System; 3 @using System.Web; 4 @using System.IO; 5 @using System.Data; 6 @using Dynamicweb.Rendering; 7 @using Dynamicweb.Data; 8 @using Vestjylland.Helpers; 9 @using Dynamicweb.Content.Items; 10 @using System.Net; 11 @using Dynamicweb 12 13 14 @{ 15 //init reps and apis 16 Vestjylland.Repository.BookMeetingSlotsRepository bookMeetingSlotsRepository = new Vestjylland.Repository.BookMeetingSlotsRepository(); 17 Vestjylland.Repository.BookMeetingBookingsRepository bookMeetingBookingsRepository = new Vestjylland.Repository.BookMeetingBookingsRepository(); 18 Vestjylland.Api.BookMeeting bookMeetingApi = new Vestjylland.Api.BookMeeting(); 19 20 //get all filters 21 var filters = bookMeetingApi.GetMeetingCandidateFilters(); 22 Vestjylland.Api.MeetingCandidateFilter filterSelected = null; 23 24 //init vars 25 IEnumerable<Vestjylland.Api.MeetingCandidateList> list = null; 26 string filterQuery = Dynamicweb.Core.Converter.ToString(Context.Current.Request.QueryString["filter"]); 27 List<string> meetingUserIdErrors = new List<string>(); 28 string meetingUserIdsPost = ""; 29 string meetingFromTimePost = ""; 30 string meetingToTimePost = ""; 31 int meetingDaysAddedPost = 0; 32 string meetingTemplatePost = ""; 33 34 IEnumerable<Vestjylland.Api.EmailTemplates> emailTemplates = null; 35 36 //upload file if needed 37 dynamic resultUpload = null; 38 dynamic flashUploadJsonResponse = (dynamic)Dynamicweb.Context.Current.Session["flashUploadMeeting"] ?? null; 39 if (Context.Current.Request.Files.Count > 0) 40 { 41 var test = Context.Current.Request.Files[0]; 42 byte[] fileData = null; 43 using (var binaryReader = new BinaryReader(Context.Current.Request.Files[0].InputStream)) 44 { 45 fileData = binaryReader.ReadBytes(Context.Current.Request.Files[0].ContentLength); 46 } 47 48 if (fileData != null && !String.IsNullOrEmpty(Context.Current.Request.Files[0].FileName)) 49 { 50 string base64StringUpload = Convert.ToBase64String(fileData, 0, fileData.Length); 51 resultUpload = bookMeetingApi.PostUploadExcel(base64StringUpload, Context.Current.Request.Files[0].FileName); 52 53 Context.Current.Session["flashUploadMeeting"] = resultUpload; 54 55 string redirectLink = "/Default.aspx?ID=" + Pageview.Page.ID; 56 if (resultUpload["Success"] == "true") 57 { 58 redirectLink = redirectLink + "&filter=" + resultUpload["CreatedListId"]; 59 } 60 Dynamicweb.Context.Current.Response.Redirect(redirectLink); 61 } 62 } 63 64 65 //lets do the magic 66 if (!String.IsNullOrEmpty(filterQuery)) 67 { 68 list = bookMeetingApi.GetMeetingCandidateList(filterQuery); 69 emailTemplates = bookMeetingApi.GetEmailTemplates(); 70 71 //if asked for, update DB with new bookings and send it to CRM 72 meetingUserIdsPost = Dynamicweb.Core.Converter.ToString(Context.Current.Request.Form["meeting_user_id"]); 73 meetingFromTimePost = Dynamicweb.Core.Converter.ToString(Context.Current.Request.Form["timefrom"]); 74 meetingToTimePost = Dynamicweb.Core.Converter.ToString(Context.Current.Request.Form["timeto"]); 75 meetingDaysAddedPost = Dynamicweb.Core.Converter.ToInt32(Context.Current.Request.Form["daysadded"]); 76 meetingTemplatePost = Dynamicweb.Core.Converter.ToString(Context.Current.Request.Form["template"]); 77 78 if (!String.IsNullOrEmpty(meetingUserIdsPost)) 79 { 80 string[] meetingUserIds = meetingUserIdsPost.Split(','); 81 foreach (string meetingUserId in meetingUserIds) 82 { 83 84 bool error = false; 85 86 //insert into DB first 87 var booking = bookMeetingBookingsRepository.CreateByFirstSlotAvailable(meetingUserId, meetingFromTimePost, meetingToTimePost, meetingTemplatePost, meetingDaysAddedPost); 88 if (booking.BookID > 0) 89 { 90 //send to crm 91 string meetingId = bookMeetingApi.PostCreateMeetingEmail(meetingUserId, booking.BookID.ToString(), booking.BookTime, meetingTemplatePost); 92 93 //update db booking with reference 94 if (!String.IsNullOrEmpty(meetingId)) 95 { 96 bookMeetingBookingsRepository.UpdateMeetingID(booking.BookID, meetingId); 97 } 98 else 99 { 100 error = true; 101 } 102 103 } 104 else 105 { 106 error = true; 107 meetingUserIdErrors.Add(meetingUserId); 108 } 109 110 if (error) 111 { 112 meetingUserIdErrors.Add(meetingUserId); 113 } 114 } 115 } 116 } 117 } 118 119 <div class="container"> 120 @if (String.IsNullOrEmpty(filterQuery)) 121 { 122 <form method="post" class="form-inline" action="" enctype="multipart/form-data"> 123 <div class="form-group"> 124 <label>Upload liste:</label> 125 <input type="file" name="file_list" /> 126 <button type="submit" class="btn btn-primary"> 127 Upload &nbsp;<i class="far fa-chevron-right"></i> 128 </button> 129 </div> 130 </form> 131 132 <hr /> 133 <br /> 134 135 } 136 137 @if (flashUploadJsonResponse != null) 138 { 139 <div class="alert-success" style="margin-top: 20px;"> 140 <p>Medlemmer success: @flashUploadJsonResponse["CreatedAccounts"].Count </p> 141 @if (flashUploadJsonResponse["NotCreatedAccounts"].Count > 0) 142 { 143 <p> 144 Medlemmer fejl:<br /> 145 @foreach (var accountError in flashUploadJsonResponse["NotCreatedAccounts"]) 146 { 147 <span>Kundenummer:</span> @accountError["AccountNumber"] <span>-</span> @accountError["ErrorMessage"] <br /> 148 149 } 150 </p> 151 } 152 </div> 153 Context.Current.Session["flashUploadMeeting"] = null; 154 } 155 156 <form method="get" class="" action=""> 157 <div class="form-group"> 158 <label>M&oslash;dekandidat filter:</label> &nbsp; 159 <p> 160 <select name="filter" class="form-control"> 161 <option value="">-- V&aelig;lg liste --</option> 162 @foreach (var filter in filters) 163 { 164 string selected = ""; 165 if (filter.Id == filterQuery) 166 { 167 selected = "selected"; 168 filterSelected = filter; 169 } 170 <option value="@filter.Id" @selected>@filter.Name (@filter.Description)</option> 171 } 172 </select> 173 </p> 174 175 <button tabindex="4" type="submit" class="btn btn-primary"> 176 Hent personer &nbsp;<i class="far fa-chevron-right"></i> 177 </button> 178 </div> 179 </form> 180 <br /> 181 182 @if (list != null) 183 { 184 <div class="col-xs-12"> 185 <hr /> 186 <h2>Udsend til disse personer</h2> 187 @if (filterSelected != null) 188 { 189 <p>@filterSelected.Description</p> 190 } 191 192 <form method="post" action="" class="book-meeting-admin__slotsform"> 193 <div class="table-responsive"> 194 <table class="table table-bordered table-striped"> 195 <thead> 196 <tr> 197 <td>Navn</td> 198 <td>E-mail</td> 199 <td>V&aelig;lg <input type="checkbox" name="meeting_user_all" id="meeting_user_all" checked /></td> 200 </tr> 201 </thead> 202 @foreach (var listItem in list) 203 { 204 string classNotice = ""; 205 if (!String.IsNullOrEmpty(meetingUserIdsPost)) 206 { 207 string[] meetingUserIds = meetingUserIdsPost.Split(','); 208 if (meetingUserIds.Contains(listItem.Id)) 209 { 210 classNotice = meetingUserIdErrors.Contains(listItem.Id) ? "alert-danger" : "alert-success"; 211 } 212 213 } 214 215 <tr class="@classNotice"> 216 <td>@listItem.Name</td> 217 <td>@listItem.Email</td> 218 <td><input type="checkbox" name="meeting_user_id" class="meeting_user_id" value="@listItem.Id" checked /></td> 219 </tr> 220 221 } 222 </table> 223 </div> 224 225 @if (String.IsNullOrEmpty(meetingUserIdsPost)) 226 { 227 <div class="row">&nbsp;</div> 228 <div class="row"> 229 <div class="col-3"> 230 <label>Antal dage inden tid kan gives</label> 231 <input type="number" class="form-control" name="daysadded" placeholder="Antal dage" tabindex="3" value="14"> 232 </div> 233 <div class="col-3"> 234 <label>Fra tid (hh:mm)</label> 235 <input type="text" class="form-control" name="timefrom" placeholder="Fra tid" tabindex="3" value="08:00"> 236 </div> 237 <div class="col-3"> 238 <label>Til tid (hh:mm)</label> 239 <input type="text" class="form-control" name="timeto" placeholder="Til tid" tabindex="3" value="18:00"> 240 </div> 241 <div class="col-3"> 242 <label>Mailskabelon</label> 243 <select class="form-control" name="template" tabindex="3" required> 244 <option value="">-- Vælg skabelon --</option> 245 @foreach (var template in emailTemplates) 246 { 247 <option value="@template.EmailTemplateId">@template.Name</option> 248 } 249 </select> 250 </div> 251 <div class="col-3"> 252 <label>&nbsp;</label> 253 <button tabindex="4" type="submit" class="btn btn-primary">Udsend &nbsp;<i class="far fa-chevron-right"></i></button> 254 </div> 255 </div> 256 <div class="row">&nbsp;</div> 257 } 258 </form> 259 </div> 260 } 261 </div>
Hej
Support billede
Lorem ipsum dolar sit Lorem ipsum dolar sit Lorem ipsum dolar sit Lorem ipsum dolar sit Lorem ipsum dolar sit
Book gratis opringning/møde Chat
💬 Chat med os
Support billede