public async Task <ActionResult> EditProcedure(ProcedureEditModel model) { if (!ModelState.IsValid) { ViewBag.Error = CreateError(); return(View("Error")); } try { var procedureDto = Mapper.Map <ProcedureEditModel, ProcedureDTO>(model); await SenEmailAboutUpdateProcedure(model); _procedureService.Update(procedureDto); _procedureService.Commit(); _currentUser = GetCurrentUser(); TempData["Success"] = Resources.Messages.ProcedureUpdatedSuccess; Logger.Log.Info($"{_currentUser.Email} Edited Procedure #{model.Id} for Product #{model.ProductId} "); return(RedirectToAction("ProductProcedures", new { id = model.ProductId })); } catch (Exception ex) { @ViewBag.Error = ex.ToString(); return(View("Error")); } }
public async Task <string> CreateBodyText(ProcedureEditModel model) { var bodyStr = new StringBuilder(); var oldProcedure = _procedureService.GetItem(model.Id); if (oldProcedure.ApprovalDate != model.ApprovalDate) { bodyStr.Append($"<strong>{Resources.Labels.ApprovalDate}</strong> changed to {model.ApprovalDate.ToString().Substring(0, 10)}<br>"); } if (oldProcedure.EstimatedApprovalDate != model.ApprovalDate) { bodyStr.Append($"<strong>{Resources.Labels.EstimatedApprovalDate}</strong> changed to {model.EstimatedApprovalDate.ToString(CultureInfo.InvariantCulture).Substring(0, 10)}<br>"); } if (oldProcedure.SubmissionDate != model.SubmissionDate) { bodyStr.Append($"<strong>{Resources.Labels.SubmissionDate}</strong> changed to {model.SubmissionDate.ToString(CultureInfo.InvariantCulture).Substring(0, 10)}<br>"); } if (oldProcedure.Comments != model.Comments) { bodyStr.Append($"<strong>Comments</strong> changed to {model.Comments}<br>"); } if (model.ProcedureDocuments != null && model.ProcedureDocuments.Count > 0) { foreach (var doc in model.ProcedureDocuments) { var newDocument = new ProcedureDocument() { PathToDocument = doc.PathToDocument, ProcedureId = doc.ProcedureId, ProcedureDocsType = doc.ProcedureDocsType }; var res = oldProcedure.ProcedureDocuments.FirstOrDefault(a => a.PathToDocument == doc.PathToDocument && a.ProcedureId == doc.ProcedureId && a.ProcedureDocsType == doc.ProcedureDocsType); var res2 = oldProcedure.ProcedureDocuments.Contains(newDocument); if (res == null && !res2) { bodyStr.Append($"<strong>To {doc.ProcedureDocsType} added document:</strong> {doc.PathToDocument}<br>"); } } } return(bodyStr.ToString()); }
public async Task SenEmailAboutUpdateProcedure(ProcedureEditModel model) { try { var prod = _productService.GetProduct((int)model.ProductId); if (prod == null) { Logger.Log.Error($"{Resources.ErrorMessages.EmailNotSendCantFindProdToProc} ProcedureId={model.Id}"); return; } var product = Mapper.Map <ProductDTO, ShowProductModel>(prod); var productName = product.ProductName; var userEmailsToNotify = _countryService.GetCountryUsersEmailsViaName(product.Country); var body = new StringBuilder(); var subject = Resources.Email.SubjectProcedureUpdate.Replace("(name)", productName) + $" in {product.Country}"; body.Append(Resources.Email.BodyProcedureUpdate.Replace("(name)", productName) + $" in {product.Country}"); body.Append($" {model.ProcedureType}"); var bodyCompared = await CreateBodyText(model); if (!string.IsNullOrEmpty(bodyCompared)) { body.Append(":<br>"); body.Append(bodyCompared); body.Append(Resources.Email.Signature); var emailerDto = Mapper.Map <Emailer, EmailerDTO>(emailer); if (model.SubmissionDate >= DateTime.Parse("2018-11-11 00:00:00")) { await _emailService.SendEmailNotification(body.ToString(), subject, emailerDto, userEmailsToNotify, toSend); } } } catch (Exception ex) { var userName = User.Identity.Name; Logger.Log.Error($"{userName}: SenEmailAboutAddUpdateProduct() {ex.Message} "); } }