/// <summary> /// Method to send mail for homework - SS /// </summary> /// <param name="homeworkMail">homework mail</param> /// <param name="instituteId">institute id</param> /// <returns>response</returns> public async Task <HomeworkManagementResponse> SendMailAsync(AddHomeworkMailMappingAc homeworkMail, int instituteId) { if (string.IsNullOrEmpty(homeworkMail.Message)) { return new HomeworkManagementResponse() { HasError = true, Message = "Message can't be empty", ErrorType = HomeworkManagementReponseType.Message } } ; else if (string.IsNullOrEmpty(homeworkMail.Subject)) { return new HomeworkManagementResponse() { HasError = true, Message = "Message can't be empty", ErrorType = HomeworkManagementReponseType.Subject } } ; else { if (await _iMSDbContext.Homeworks.AnyAsync(x => x.Class.InstituteId == instituteId)) { var homeworkMailMapping = new HomeworkMailMapping() { CreatedOn = DateTime.UtcNow, HomeworkId = homeworkMail.HomeworkId, Message = homeworkMail.Message, Subject = homeworkMail.Subject }; _iMSDbContext.HomeworkMailMappings.Add(homeworkMailMapping); await _iMSDbContext.SaveChangesAsync(); List <StudentRecieveHomeworkMailMapping> mailMappings = new List <StudentRecieveHomeworkMailMapping>(); foreach (var student in homeworkMail.Students) { mailMappings.Add(new StudentRecieveHomeworkMailMapping() { HomeworkMailId = homeworkMailMapping.Id, StudentId = student.Id, CreatedOn = DateTime.UtcNow, }); } if (mailMappings.Count != 0) { using (var db = await _iMSDbContext.Database.BeginTransactionAsync()) { await _iMSDbContext.BulkInsertAsync(mailMappings); db.Commit(); } } mailMappings = await _iMSDbContext.StudentRecieveHomeworkMailMappings.Include(s => s.Student) .Where(x => x.HomeworkMailId == homeworkMailMapping.Id).ToListAsync(); var tos = new List <EmailAddress>(); foreach (var user in mailMappings) { tos.Add(new EmailAddress() { Name = user.Student.FirstName, Address = user.Student.FamilyRelationEmail }); } var emailConfiguration = await _iMSDbContext.AdministrationEmailConfigurations.Include(s => s.Institute) .FirstOrDefaultAsync(x => x.InstituteId == instituteId); if (emailConfiguration != null) { var path = Path.Combine(Directory.GetCurrentDirectory(), "MailTemplates"); var engine = new RazorLightEngineBuilder().UseFilesystemProject(path).UseMemoryCachingProvider().Build(); string resultFromFile = await engine.CompileRenderAsync("NotificationMail.cshtml", new CircularNoticeAc() { InstituteName = emailConfiguration.Institute.Name, Message = homeworkMail.Message }); var email = new EmailMessage() { Content = resultFromFile, FromAddresses = new List <EmailAddress>() { new EmailAddress() { Name = emailConfiguration.Institute.Name, Address = emailConfiguration.MailUserName } }, Subject = "Homework", ToAddresses = tos }; _emailService.SendMail(email); } return(new HomeworkManagementResponse() { HasError = false, Message = "Mail send successfully" }); } else { return new HomeworkManagementResponse() { HasError = true, Message = "Homework not found", ErrorType = HomeworkManagementReponseType.Id } }; } }
public async Task <IActionResult> SendMailAsync([FromBody] AddHomeworkMailMappingAc homeworkMail) { var instituteId = await GetUserCurrentSelectedInstituteIdAsync(); return(Ok(await _homeworkManagementRepository.SendMailAsync(homeworkMail, instituteId))); }