Пример #1
0
        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);
        }
Пример #2
0
        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);
     };
 }
Пример #6
0
        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);
            }
        }
Пример #7
0
        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);
            }
        }
Пример #10
0
        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);
                }
            }
        }
Пример #11
0
        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);
        }