コード例 #1
0
        /// <summary>
        /// Insert BOM Request
        /// </summary>
        /// <param name="requestViewModel"></param>
        /// <returns></returns>
        public IResult InsertBOMRequest(List <FileDetails> fileList, BomRequestViewModel bomRequestViewModel)
        {
            bomRequestViewModel.RequestId = null;
            var result = new Result
            {
                Operation = Operation.Create,
                Status    = Status.Success
            };

            try
            {
                var bomRequest = new Request();
                bomRequest.MapFromViewModel(bomRequestViewModel, (ClaimsIdentity)_principal.Identity);

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

                if (bomRequestViewModel.BomRequestNodes != null && bomRequestViewModel.BomRequestNodes.Any())
                {
                    bomRequest.BomRequestNodes = bomRequestViewModel.BomRequestNodes.Select(t =>
                    {
                        var bomNode = new BomRequestNode();
                        bomNode.MapFromViewModel(t);
                        return(bomNode);
                    }).ToList();
                }

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

                if (fileList != null && fileList.Any())
                {
                    bomRequest.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, bomRequest.Files);

                _requestRepository.UpdateOne(t => t.RequestId.Equals(bomRequest.RequestId), updateDefinition);
                if (bomRequest.Files != null && bomRequest.Files.Any())
                {
                    bomRequestViewModel.Files = new List <string>();
                    bomRequest.Files.ForEach(x => bomRequestViewModel.Files.Add(x.ToString()));
                }
                result.Body    = bomRequestViewModel.MapFromModel(bomRequest);
                result.Message = RequestNotification.Created;
            }
            catch (Exception e)
            {
                result.Message = e.Message;
                result.Status  = Status.Fail;
            }
            return(result);
        }