public async Task <JsonResult> AddNewOrganization([Required] OrganizationViewModel model)
 {
     if (!ModelState.IsValid)
     {
         return(Json(new InvalidParametersResultModel().AttachModelState(ModelState)));
     }
     return(await JsonAsync(_organizationService.AddNewOrganizationAsync(model), SerializerSettings));
 }
Example #2
0
        /// <summary>
        /// Import payment
        /// </summary>
        /// <param name="documents"></param>
        /// <returns></returns>
        private async Task <ResultModel> SavePaymentsFromImport(Documents documents)
        {
            if (documents == null)
            {
                return(new InvalidParametersResultModel());
            }

            if (!documents.Document.Any())
            {
                return(new NotFoundResultModel());
            }

            var listErrors = new List <IErrorModel>();


            var listDocuments = documents.Document;


            foreach (var payment in listDocuments)
            {
                try
                {
                    var buyer = payment.SupplierInfo.Buyer;
                    if (buyer == null)
                    {
                        continue;
                    }

                    var organizationRequest = await _organizationService.GetOrganizationByFiscalCodeAsync(buyer.IDNO);

                    Guid?organizationId = null;

                    if (organizationRequest.IsSuccess)
                    {
                        organizationId = organizationRequest.Result.Id;
                    }
                    else
                    {
                        var addOrganizationRequest = await _organizationService.AddNewOrganizationAsync(new OrganizationViewModel
                        {
                            Name       = buyer.Title,
                            FiscalCode = buyer.IDNO,
                            Bank       = buyer.BankAccount.BranchTitle,
                            Email      = "*****@*****.**",
                            Phone      = "00000000",
                            ClientType = OrganizationType.Client
                        });

                        if (!addOrganizationRequest.IsSuccess)
                        {
                            listErrors.AddRange(addOrganizationRequest.Errors);
                            continue;
                        }
                        organizationId = addOrganizationRequest.Result;
                    }

                    var paymentDate = payment.SupplierInfo.DeliveryDate.StringToDateTime();


                    if (!paymentDate.HasValue)
                    {
                        listErrors.Add(new ErrorModel
                        {
                            Message = "Data [" + payment.SupplierInfo.DeliveryDate + "] wrong format"
                        });
                        continue;
                    }


                    var listRows = payment.SupplierInfo.Merchandises.Row;
                    if (listRows == null || !listRows.Any())
                    {
                        continue;
                    }

                    foreach (var row in listRows)
                    {
                        var newPayment = new AddPaymentViewModel
                        {
                            DateTransaction      = paymentDate.Value,
                            OrganizationId       = organizationId.Value,
                            TotalPrice           = row.TotalPrice,
                            TotalTVA             = row.TotalTVA,
                            TVA                  = row.TVA,
                            TotalPriceWithoutTVA = row.TotalPriceWithoutTVA,
                            UnitPriceWithoutTVA  = row.UnitPriceWithoutTVA,
                            Quantity             = row.Quantity,
                            Currency             = "MDL",
                            PaymentDestination   = row.Name,
                            DocumentNumber       = payment.AdditionalInformation.field,
                        };

                        var paymentCodeRequest = await GetPaymentCodeByNameAsync(row.Name);

                        if (!paymentCodeRequest.IsSuccess)
                        {
                            listErrors.Add(new ErrorModel
                            {
                                Message = "Payment name  [" + row.Name + "] not exist"
                            });
                            continue;
                        }

                        newPayment.PaymentCodeId = paymentCodeRequest.Result.Id;

                        if (await ExistPaymentAsync(newPayment))
                        {
                            continue;
                        }

                        var addPaymentResult = await AddPaymentAsync(newPayment);

                        if (!addPaymentResult.IsSuccess)
                        {
                            listErrors.AddRange(addPaymentResult.Errors);
                        }
                    }
                }
                catch (Exception ex)
                {
                    listErrors.Add(new ErrorModel
                    {
                        Message = "Error import payment code [" + payment.AdditionalInformation.field + "]  [" + ex.Message + "]" + "[" + ex.StackTrace + "]"
                    });
                }
            }

            listErrors = listErrors.DistinctBy(x => x.Message).ToList();
            return(listErrors.Any() ? new ResultModel {
                IsSuccess = false, Errors = listErrors
            } : new ResultModel {
                IsSuccess = true
            });
        }