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); }
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 }); }