Exemple #1
0
        public void EditorComment(Submission submission, EditorCommentModel model, long userID, string path = null)
        {
            var context = _serviceProvider.GetService <ApplicationDbContext>();

            submission.EditorComment = model.Comment;
            var previoursStatus = submission.SubmissionStatus;

            if (model.IsFinished == true)
            {
                submission.SubmissionStatus = SubmissionStatus.Submission;
            }
            context.SaveChanges();
        }
Exemple #2
0
        public async Task <IActionResult> EditorComment(EditorCommentModel model)
        {
            if (ModelState.IsValid)
            {
                var sumissionService = HttpContext.RequestServices.GetService <ISubmissionService>();
                var submission       = sumissionService.GetSubmission(model.Id, ((JMSPrincipal)User).ApplicationUser.Id);
                if (submission.SubmissionStatus == SubmissionStatus.Draft)
                {
                    sumissionService.EditorComment(submission, model, ((JMSPrincipal)User).ApplicationUser.Id);
                    sumissionService.SaveSubmissionHistory(new SubmissionHistory
                    {
                        TenanatID    = JMSUser.TenantId.GetValueOrDefault(),
                        SubmissionId = model.Id,
                        Action       = $"Editor comment has been changed.",
                        ActionDate   = DateTime.UtcNow,
                        ActorEmail   = JMSUser.Email,
                        ActorName    = $"{JMSUser.FirstName} {JMSUser.LastName}"
                    });
                    if (model.IsFinished.HasValue && model.IsFinished.Value)
                    {
                        try
                        {
                            await SubmissionConfirmaitionEmail(model.Id, GetService <IRazorViewToStringRenderer>(), GetService <IEmailSender>(), GetService <IFileService>());

                            AddSuccessMessage("Submission has been submitted. A confirmation email has been send to you.");
                            sumissionService.SaveSubmissionHistory(new SubmissionHistory
                            {
                                TenanatID    = JMSUser.TenantId.GetValueOrDefault(),
                                SubmissionId = model.Id,
                                Action       = $"Submission has been Completed and Submitted",
                                ActionDate   = DateTime.UtcNow,
                                ActorEmail   = JMSUser.Email,
                                ActorName    = $"{JMSUser.FirstName} {JMSUser.LastName}"
                            });
                        }
                        catch (Exception ex)
                        {
                            HttpContext.RiseError(ex);
                            AddFailMessage("Submission has been submitted  but failed to send confirmation email.");
                        }

                        try
                        {
                            var eics = GetService <IUserService>().GetTenantUserByRole(JMSUser.TenantId.Value, RoleName.EIC);
                            if (eics.Any())
                            {
                                var emailBody = await GetService <IRazorViewToStringRenderer>().RenderViewToStringAsync(@"/Views/EmailTemplates/AddSubmissionNotificationEmail.cshtml", new AddSubmisssionNotificationEmailModel());

                                var mailMessage = new MailMessage(_configuration[JMSSetting.SenderEmail], eics.First().Email, _configuration[JMSSetting.NewSubmissionEmailSubject], emailBody)
                                {
                                    IsBodyHtml = true
                                };
                                foreach (var eic in eics.Skip(1))
                                {
                                    mailMessage.To.Add(eic.Email);
                                }
                                GetService <IEmailSender>().SendEmail(mailMessage);
                            }
                        }
                        catch (Exception ex)
                        {
                            HttpContext.RiseError(ex);
                        }
                    }
                }
                return(Ok());
            }
            return(BadRequest());
        }