public async Task Should_Success_Update_Data() { var numberGeneratorMock = new Mock <IBankDocumentNumberGenerator>(); PPHBankExpenditureNoteFacade facade = new PPHBankExpenditureNoteFacade(_dbContext(GetCurrentMethod()), numberGeneratorMock.Object); PPHBankExpenditureNote model = await _dataUtil(facade, GetCurrentMethod()).GetTestData(); PPHBankExpenditureNoteItem modelItem = await _dataUtil(facade, GetCurrentMethod()).GetItemNewData(); model.Items.Clear(); model.Items.Add(modelItem); var Response = await facade.Update((int)model.Id, model, "Unit Test"); Assert.NotEqual(Response, 0); }
public async Task Should_Success_Update_Data() { var numberGeneratorMock = new Mock <IBankDocumentNumberGenerator>(); var serviceProvider = new Mock <IServiceProvider>(); serviceProvider .Setup(x => x.GetService(typeof(IHttpClientService))) .Returns(new HttpClientTestService()); var services = new ServiceCollection(); services.AddMemoryCache(); var serviceProviders = services.BuildServiceProvider(); var memoryCache = serviceProviders.GetService <IMemoryCache>(); var mockMemoryCache = new Mock <IMemoryCacheManager>(); mockMemoryCache.Setup(x => x.Get(MemoryCacheConstant.Divisions, It.IsAny <Func <ICacheEntry, List <IdCOAResult> > >())) .Returns(new List <IdCOAResult>()); mockMemoryCache.Setup(x => x.Get(MemoryCacheConstant.BankAccounts, It.IsAny <Func <ICacheEntry, List <BankAccountCOAResult> > >())) .Returns(new List <BankAccountCOAResult>()); mockMemoryCache.Setup(x => x.Get(MemoryCacheConstant.IncomeTaxes, It.IsAny <Func <ICacheEntry, List <IncomeTaxCOAResult> > >())) .Returns(new List <IncomeTaxCOAResult>()); serviceProvider .Setup(x => x.GetService(typeof(IMemoryCacheManager))) .Returns(mockMemoryCache.Object); serviceProvider .Setup(x => x.GetService(typeof(IdentityService))) .Returns(new IdentityService() { TimezoneOffset = 1, Token = "token", Username = "******" }); PPHBankExpenditureNoteFacade facade = new PPHBankExpenditureNoteFacade(_dbContext(GetCurrentMethod()), numberGeneratorMock.Object, serviceProvider.Object); PPHBankExpenditureNote model = await _dataUtil(facade, GetCurrentMethod()).GetTestData(); PPHBankExpenditureNoteItem modelItem = await _dataUtil(facade, GetCurrentMethod()).GetItemNewData(); model.Items.Clear(); model.Items.Add(modelItem); var Response = await facade.Update((int)model.Id, model, "Unit Test"); Assert.NotEqual(0, Response); }
public async Task <int> Update(int id, PPHBankExpenditureNote model, string username) { int Updated = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { EntityExtension.FlagForUpdate(model, username, UserAgent); dbContext.Entry(model).Property(x => x.Date).IsModified = true; dbContext.Entry(model).Property(x => x.TotalDPP).IsModified = true; dbContext.Entry(model).Property(x => x.TotalIncomeTax).IsModified = true; dbContext.Entry(model).Property(x => x.BGNo).IsModified = true; dbContext.Entry(model).Property(x => x.LastModifiedAgent).IsModified = true; dbContext.Entry(model).Property(x => x.LastModifiedBy).IsModified = true; dbContext.Entry(model).Property(x => x.LastModifiedUtc).IsModified = true; foreach (var item in model.Items) { if (item.Id == 0) { EntityExtension.FlagForCreate(item, username, UserAgent); dbContext.PPHBankExpenditureNoteItems.Add(item); PurchasingDocumentExpedition pde = new PurchasingDocumentExpedition { Id = item.PurchasingDocumentExpeditionId, IsPaidPPH = true, BankExpenditureNotePPHNo = model.No, BankExpenditureNotePPHDate = model.Date }; EntityExtension.FlagForUpdate(pde, username, UserAgent); //dbContext.Attach(pde); dbContext.Entry(pde).Property(x => x.IsPaidPPH).IsModified = true; dbContext.Entry(pde).Property(x => x.BankExpenditureNotePPHNo).IsModified = true; dbContext.Entry(pde).Property(x => x.BankExpenditureNotePPHDate).IsModified = true; dbContext.Entry(pde).Property(x => x.LastModifiedAgent).IsModified = true; dbContext.Entry(pde).Property(x => x.LastModifiedBy).IsModified = true; dbContext.Entry(pde).Property(x => x.LastModifiedUtc).IsModified = true; } } foreach (var item in dbContext.PPHBankExpenditureNoteItems.AsNoTracking().Where(p => p.PPHBankExpenditureNoteId == model.Id)) { PPHBankExpenditureNoteItem itemModel = model.Items.FirstOrDefault(prop => prop.Id.Equals(item.Id)); if (itemModel == null) { EntityExtension.FlagForDelete(item, username, UserAgent); this.dbContext.PPHBankExpenditureNoteItems.Update(item); PurchasingDocumentExpedition pde = new PurchasingDocumentExpedition { Id = item.PurchasingDocumentExpeditionId, IsPaidPPH = false, BankExpenditureNotePPHDate = null, BankExpenditureNotePPHNo = null }; EntityExtension.FlagForUpdate(pde, username, UserAgent); //dbContext.Attach(pde); dbContext.Entry(pde).Property(x => x.IsPaidPPH).IsModified = true; dbContext.Entry(pde).Property(x => x.BankExpenditureNotePPHNo).IsModified = true; dbContext.Entry(pde).Property(x => x.BankExpenditureNotePPHDate).IsModified = true; dbContext.Entry(pde).Property(x => x.LastModifiedAgent).IsModified = true; dbContext.Entry(pde).Property(x => x.LastModifiedBy).IsModified = true; dbContext.Entry(pde).Property(x => x.LastModifiedUtc).IsModified = true; } } Updated = await dbContext.SaveChangesAsync(); //await ReverseJournalTransaction(model.No); //await AutoCreateJournalTransaction(model); //await DeleteDailyBankTransaction(model.No); //await CreateDailyBankTransaction(model); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Updated); }