示例#1
0
        public ImportReportModel LoadData(string file)
        {
            var result = _importService.ImportDataRow(file);

            if (result == null)
            {
                throw new NullReferenceException(nameof(result));
            }

            var importReport = new ImportReportModel();

            foreach (var item in result)
            {
                var configuration = _configuration.Load();
                if (configuration == null)
                {
                    throw new NullReferenceException(nameof(configuration));
                }

                var documentsToAdd    = new List <PaymentDocumentEntity>();
                var documentsToUpdate = new List <PaymentDocumentEntity>();

                foreach (var detailsImport in item.PaymentDetailsImports)
                {
                    try
                    {
                        var personalAccount = ValidPersonalAccount(detailsImport.PersonalAccount, configuration.AccountLength);
                        var documentDate    = ValidDateTime(item.DocumentData);

                        var account = _accountService.GetItem(x => x.Account == personalAccount);
                        if (account == null)
                        {
                            _report.Write(personalAccount.ToString(), FileType.Html);
                            importReport.CorruptedRecords++;
                            continue;
                        }

                        var paymentDocuments = account.PaymentDocuments.Where(x => x.PaymentDate == documentDate).ToList();
                        if (paymentDocuments.Count() != 0)
                        {
                            documentsToUpdate
                            .AddRange(paymentDocuments
                                      .Where(entity => entity.Accrued != detailsImport.Accrued ||
                                             entity.Received != detailsImport.Received &&
                                             entity.IsDeleted == false));
                            continue;
                        }

                        if (account.PaymentDocuments == null)
                        {
                            account.PaymentDocuments = new List <PaymentDocumentEntity>();
                        }

                        var paymentDocument = new PaymentDocumentEntity
                        {
                            AccountId   = account.Id,
                            Accrued     = detailsImport.Accrued,
                            Received    = detailsImport.Received,
                            PaymentDate = documentDate,
                        };

                        documentsToAdd.Add(paymentDocument);
                    }
                    catch (Exception e)
                    {
                        _report.Write(detailsImport.PersonalAccount.ToString(), FileType.Html);

                        _report.WriteException(e.Message, FileType.Html);

                        continue;
                    }
                }

                if (documentsToAdd.Count != 0)
                {
                    _documentService.Add(documentsToAdd);
                    importReport.Add += documentsToAdd.Count;
                }

                if (documentsToUpdate.Count != 0)
                {
                    _documentService.Update(documentsToUpdate);
                    importReport.Updates += documentsToUpdate.Count;
                }
            }
            return(importReport);
        }
示例#2
0
        public static DataHandler SeedData(decimal accrued = 200, decimal received = 100, decimal percent = 25, decimal rate = 166)
        {
            var district = new DistrictEntity()
            {
                Code = 1,
                Name = "test"
            };

            var street = new StreetEntity()
            {
                DistrictId = district.Id,
                District   = district,
                StreetName = "1",
            };

            var location = new LocationEntity()
            {
                StreetId        = street.Id,
                Street          = street,
                HouseNumber     = "1",
                BuildingCorpus  = "2",
                ApartmentNumber = "3",
            };

            var account = new AccountEntity()
            {
                StreetId   = street.Id,
                Account    = 1,
                LocationId = location.Id,
                Location   = location
            };

            var payment = new PaymentDocumentEntity()
            {
                AccountId   = account.Id,
                Account     = account,
                Accrued     = accrued,
                Received    = received,
                PaymentDate = DateTime.Now
            };

            var defaultRate = new RateEntity()
            {
                Price     = Convert.ToDecimal(ConfigurationManager.AppSettings["DefaultPrice"]),
                IsDefault = true
            };

            var connectionString = ConfigurationManager.ConnectionStrings[ConfigurationManager.AppSettings["ConnectionName"]].ConnectionString;

            using (var dataBase = new ApplicationDbContext(connectionString))
            {
                dataBase.Database.Delete();
                dataBase.Database.Create();

                dataBase.Districts.Add(district);
                dataBase.Streets.Add(street);
                dataBase.Locations.Add(location);
                dataBase.Accounts.Add(account);
                dataBase.PaymentDocuments.Add(payment);
                dataBase.Rates.Add(defaultRate);

                dataBase.SaveChanges();
            }

            return(new DataHandler()
            {
                AccountEntity = account,
                StreetEntity = street,
                LocationEntity = location
            });
        }