public void SendEmailToFirstStep(List <string> emails, AdminNotificationViewModel model) { var emailRequest = new EmailRequestWithUrl <AdminNotificationViewModel>() { Model = model }; emails.ForEach(x => emailRequest.To.Add(new System.Net.Mail.MailAddress(x))); _emailComposer.SendAdminProcessedEmail(emailRequest); }
public static async Task SendPasswordResetEmail(this ApplicationUserManager userManager, UserViewModel user, EmailTemplate emailTemplate = EmailTemplate.ResetPassword, string subject = "MBOS : Password reset") { var code = await userManager.GeneratePasswordResetTokenAsync(user.Id); NameValueCollection nvc = new NameValueCollection() { { "code", code }, { "userid", GeneralService.EncryptText(user.Id.ToString()) } }; EmailRequestWithUrl <UserViewModel> model = new EmailRequestWithUrl <UserViewModel>() { Url = GeneralHelper.BuildUrl("/resetpassword", nvc), Model = user }; var mailBody = userManager.EmailComposer.GetMailContent(model, emailTemplate); await userManager.SendEmailAsync(user.Id, subject, mailBody); }
public async void SendProjectTaskAssignProcessedEmail(EmailRequestWithUrl <ITNotificationViewModel> emailRequest, bool appendFooter = true) { using (MailMessage mailMessage = new MailMessage()) { var body = _emailer.RenderTemplate(emailRequest.Template, emailRequest) + (appendFooter ? _emailer.RenderTemplate("GeneralMailFooter") : string.Empty); mailMessage.IsBodyHtml = true; mailMessage.Body = body; mailMessage.Subject = "MBOS : Project task assignment reported."; if (emailRequest.From != null) { mailMessage.From = emailRequest.From; } emailRequest.To.ToList().ForEach(mailMessage.To.Add); emailRequest.CC.ToList().ForEach(mailMessage.CC.Add); await _emailer.SendEmailAsync(mailMessage); }; }
public async void SendInternetBackupTestingProcessedEmail(EmailRequestWithUrl <ITNotificationViewModel> emailRequest, bool appendFooter = true) { using (MailMessage mailMessage = new MailMessage()) { var body = _emailer.RenderTemplate(EmailTemplate.InternetBackupTestingEmail, emailRequest.Model) + (appendFooter ? _emailer.RenderTemplate("GeneralMailFooter") : string.Empty); mailMessage.IsBodyHtml = true; mailMessage.Body = body; mailMessage.Subject = "MBOS : Internet backup testing has been processed."; if (emailRequest.From != null) { mailMessage.From = emailRequest.From; } emailRequest.To.ToList().ForEach(mailMessage.To.Add); emailRequest.CC.ToList().ForEach(mailMessage.CC.Add); await _emailer.SendEmailAsync(mailMessage); }; }
public async void SendIncidentServiceProcessedEmail(EmailRequestWithUrl <ITNotificationViewModel> emailRequest, bool appendFooter = true) { using (MailMessage mailMessage = new MailMessage()) { var body = _emailer.RenderTemplate(emailRequest.Template, emailRequest) + (appendFooter ? _emailer.RenderTemplate("GeneralMailFooter") : string.Empty); mailMessage.IsBodyHtml = true; mailMessage.Body = body; mailMessage.Subject = $"[{emailRequest.Model.UrgencyType}] MBOS : {emailRequest.Model.IncidentType} reported."; if (emailRequest.From != null) { mailMessage.From = emailRequest.From; } emailRequest.To.ToList().ForEach(mailMessage.To.Add); emailRequest.CC.ToList().ForEach(mailMessage.CC.Add); await _emailer.SendEmailAsync(mailMessage); }; }
private void SendProjectAssignCompletedEmail(Guid userId, ITNotificationViewModel notificationViewModel) { var users = _setupService.GetUserByuserId(userId); if (users != null) { var emailRequest = new EmailRequestWithUrl <ITNotificationViewModel>() { Model = users, }; emailRequest.Model = notificationViewModel; emailRequest.To.Add(new System.Net.Mail.MailAddress(users.Email)); emailRequest.Model.FullName = users.FullName; emailRequest.Template = EmailTemplate.CompletedProjectAssignment; _emailComposer.SendProjectTaskAssignProcessedEmail(emailRequest); } }
private void SendClosedBySupportIncidentServiceProcessingEmail(Guid userId, ITNotificationViewModel notificationViewModel) { var user = _setupService.GetUserByuserId(userId); if (user != null) { var emailRequest = new EmailRequestWithUrl <ITNotificationViewModel>() { Model = user, }; emailRequest.Model = notificationViewModel; emailRequest.Template = EmailTemplate.ClosedBySupportIncidentService; emailRequest.To.Add(new System.Net.Mail.MailAddress(user.Email)); emailRequest.Model.FullName = user.FullName; _emailComposer.SendIncidentServiceProcessedEmail(emailRequest); } }
public async void SendAdminProcessedEmail(EmailRequestWithUrl <AdminNotificationViewModel> emailRequest, bool appendFooter = true) { var body = _emailer.RenderTemplate(EmailTemplate.AdminProcessing, emailRequest) + (appendFooter ? _emailer.RenderTemplate("GeneralMailFooter") : string.Empty); using (var mailMessage = new MailMessage()) { mailMessage.Body = body; mailMessage.IsBodyHtml = true; mailMessage.Subject = "MBOS : Quotation Approval has been processed."; if (emailRequest.From != null) { mailMessage.From = emailRequest.From; } emailRequest.To.ToList().ForEach(mailMessage.To.Add); emailRequest.CC.ToList().ForEach(mailMessage.CC.Add); await _emailer.SendEmailAsync(mailMessage); } }
public async void SendClaimRejectedEmail(EmailRequestWithUrl <ClaimProcessingNotificationViewModel> emailRequest, string rejectReason, bool appendFooter = true) { var body = _emailer.RenderTemplate(EmailTemplate.ClaimRejected, emailRequest) + (appendFooter ? _emailer.RenderTemplate("GeneralMailFooter") : string.Empty); using (MailMessage mailMessage = new MailMessage()) { mailMessage.Body = body; mailMessage.IsBodyHtml = true; mailMessage.Subject = "MBOS : Claim rejected."; if (emailRequest.From != null) { mailMessage.From = emailRequest.From; } emailRequest.To.ToList().ForEach(mailMessage.To.Add); emailRequest.CC.ToList().ForEach(mailMessage.CC.Add); await _emailer.SendEmailAsync(mailMessage); } }
private void SendAddInternetBackupTestingProcessingEmail(Guid roleId, ITNotificationViewModel notificationViewModel) { var users = _setupService.GetUserNotificationsByRole(roleId); if (users != null && users.Any()) { foreach (var item in users) { var emailRequest = new EmailRequestWithUrl <ITNotificationViewModel>() { Model = item, }; emailRequest.Model = notificationViewModel; emailRequest.To.Add(new System.Net.Mail.MailAddress(item.Email)); emailRequest.Model.FullName = item.FullName; _emailComposer.SendInternetBackupTestingProcessedEmail(emailRequest); } } }
public async void SendRecoupmentEmail( EmailRequestWithUrl <RecoupmentProcessingNotificationViewModel> emailRequest, bool appendFooter = true) { var body = _emailer.RenderTemplate(emailRequest.Template, "Recoupment", emailRequest) + (appendFooter ? _emailer.RenderTemplate("GeneralMailFooter") : string.Empty); using (var mailMessage = new MailMessage()) { mailMessage.Body = body; mailMessage.IsBodyHtml = true; mailMessage.Subject = emailRequest.Subject; if (emailRequest.From != null) { mailMessage.From = emailRequest.From; } emailRequest.To.ToList().ForEach(mailMessage.To.Add); emailRequest.CC.ToList().ForEach(mailMessage.CC.Add); await _emailer.SendEmailAsync(mailMessage); } }
public void AddRecoupment(ServiceRequestModel <RecoupmentViewModel> serviceRequestModel) { var repo = _genericUnitOfWork.GetRepository <Recoupment, Guid>(); var branchId = serviceRequestModel.LoginInfo.LoginUserBranches.FirstOrDefault().Id; var mapped = _objectMapper.Map <RecoupmentViewModel, Recoupment>(serviceRequestModel.Model); var pettyCashQuerable = _genericUnitOfWork.GetRepository <PettyCashLedger, Guid>().GetAll(); var recoupmentExists = repo.GetAll().Any(c => !c.IsPaid && c.BranchId == branchId && c.ProcessingStatus != ProcessingStatus.Rejected); if (recoupmentExists) { throw new ArgumentNullException($"Recoupment for selected branch already exists in the system.", innerException: null); } var opentingBalance = pettyCashQuerable.FirstOrDefault(c => c.PettyCashSourceType == PettyCashSourceType.Opening && c.BranchId == branchId)?.Amount; if (opentingBalance == null) { throw new ArgumentNullException($"Opening balance is not set for the selected branch.", innerException: null); } var totalFund = pettyCashQuerable.Where(c => c.PettyCashSourceType != PettyCashSourceType.Claim && c.BranchId == branchId).Select(s => s.Amount).DefaultIfEmpty().Sum(); var totalClaim = pettyCashQuerable.Where(p => p.PettyCashSourceType == PettyCashSourceType.Claim && (p.BranchId == branchId)).Select(j => j.Amount).DefaultIfEmpty().Sum(); if (totalClaim == 0) { throw new ArgumentNullException($"No any claim has been paid.", innerException: null); } var isClaimedAmountHalfOfInitial = totalClaim >= (totalFund / 2); if (!isClaimedAmountHalfOfInitial) { throw new ArgumentNullException($"Petty cash balance should be half or more than half for applying the recoupment.", innerException: null); } if (serviceRequestModel.Model.RequestedAmount > totalFund) { throw new ArgumentNullException($"Requested amount is greater than banchwise budget limit.", innerException: null); } if (serviceRequestModel.Model.RequestedAmount == 0) { throw new ArgumentNullException($"Requested amount should be greater than zero.", innerException: null); } mapped.Id = Guid.NewGuid(); mapped.Step = 1; mapped.ProcessingStatus = ProcessingStatus.Pending; mapped.CreatedById = serviceRequestModel.CurrentUserId; mapped.CreatedDate = GeneralService.CurrentDate; mapped.RequestedDate = GeneralService.CurrentDate; mapped.BranchId = branchId; repo.Add(mapped); _genericUnitOfWork.SaveChanges(); if (mapped.ProcessingStatus != ProcessingStatus.Pending) { return; } var emails = GetRecoupmentProcessorEmails(mapped.Id); var emailRequest = new EmailRequestWithUrl <RecoupmentProcessingNotificationViewModel>() { Model = new RecoupmentProcessingNotificationViewModel() { Amount = mapped.RequestedAmount, Sender = _sharedService.GetUserFullName(mapped.CreatedById.Value), ProcessingType = "verify", Balance = mapped.PvcCurrentBalance, Date = mapped.CreatedDate.ToString("dd/MM/yyyy") } }; emails.ForEach(x => emailRequest.To.Add(new System.Net.Mail.MailAddress(x))); emailRequest.Subject = MailSubject.RecoupmentProcess.ToDescription(); emailRequest.Template = EmailTemplate.RecoupmentProcessing; _emailComposer.SendRecoupmentEmail(emailRequest); }