Пример #1
0
        /// <summary>
        /// Prepare Email options for equipment requests
        /// </summary>
        /// <param name="requestViewModel"></param>
        /// <returns></returns>
        private EmailOptions PrepareEmailOptions(EquipmentRequestViewModel requestViewModel)
        {
            var emailOptions = new EmailOptions
            {
                Template    = MailTemplate.Equipment,
                PlainBody   = string.Empty,
                Attachments = new List <Attachment>()
            };
            var msgBody = SendGridMailHelper.MailBody(_hostingEnvironment, emailOptions.Template);

            if (!string.IsNullOrEmpty(msgBody))
            {
                emailOptions.Subject = "Request for Equipment Received - SubQuip";
                emailOptions.CcMail  = new MailUser {
                    Name = "SubQuip", Email = _configuration["requestEmail"]
                };
                emailOptions.ToMailsList = requestViewModel.MailUsers;
                emailOptions.HtmlBody    = msgBody.Replace("{EquipmentNumber}", requestViewModel.EquipmentNumber).Replace("{FromDate}", requestViewModel.FromDate.ToString("dd-MM-yyyy")).Replace("{ToDate}", requestViewModel.ToDate.ToString("dd-MM-yyyy"));
            }
            return(emailOptions);
        }
        /// <summary>
        /// Insert Equipment Request
        /// </summary>
        /// <param name="equipmentRequestViewModel"></param>
        /// <returns></returns>
        public IResult InsertEquipmentRequest(List <FileDetails> fileList, EquipmentRequestViewModel equipmentRequestViewModel)
        {
            equipmentRequestViewModel.RequestId = null;
            var result = new Result
            {
                Operation = Operation.Create,
                Status    = Status.Success
            };

            try
            {
                var equipmentRequest = new Request();
                equipmentRequest.MapFromViewModel(equipmentRequestViewModel, (ClaimsIdentity)_principal.Identity);

                equipmentRequest.MailUsers = new List <MailUserDetails>();
                if (equipmentRequestViewModel.MailUsers != null && equipmentRequestViewModel.MailUsers.Any())
                {
                    equipmentRequest.MailUsers = equipmentRequestViewModel.MailUsers.Select(user =>
                    {
                        var mailUser = new MailUserDetails();
                        mailUser.MapFromViewModel(user);
                        return(mailUser);
                    }).ToList();
                }

                if (!string.IsNullOrEmpty(equipmentRequestViewModel.RegardingId))
                {
                    equipmentRequest.RegardingId = ObjectId.Parse(equipmentRequestViewModel.RegardingId);
                }
                _requestRepository.InsertOne(equipmentRequest);

                if (fileList != null && fileList.Any())
                {
                    equipmentRequest.Files = fileList.Select(fileViewModel =>
                    {
                        var file = new File();
                        file.MapFromViewModel(fileViewModel, (ClaimsIdentity)_principal.Identity);
                        _fileRepository.InsertOne(file);
                        return(file.FileId);
                    }).ToList();
                }

                var updateDefinition = Builders <Request> .Update.Set(t => t.Files, equipmentRequest.Files);

                _requestRepository.UpdateOne(t => t.RequestId.Equals(equipmentRequest.RequestId), updateDefinition);

                if (equipmentRequest.Files != null && equipmentRequest.Files.Any())
                {
                    equipmentRequestViewModel.Files = new List <string>();
                    equipmentRequest.Files.ForEach(x => equipmentRequestViewModel.Files.Add(x.ToString()));
                }
                result.Body    = equipmentRequestViewModel.MapFromModel(equipmentRequest);
                result.Message = RequestNotification.Created;
            }
            catch (Exception e)
            {
                result.Message = e.Message;
                result.Status  = Status.Fail;
            }
            return(result);
        }