Beispiel #1
0
        /// <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
                           }
                };
            }
        }
Beispiel #2
0
        public async Task <IActionResult> SendMailAsync([FromBody] AddHomeworkMailMappingAc homeworkMail)
        {
            var instituteId = await GetUserCurrentSelectedInstituteIdAsync();

            return(Ok(await _homeworkManagementRepository.SendMailAsync(homeworkMail, instituteId)));
        }