public async Task <int> CreateAsync(OthersExpenditureProofDocumentCreateUpdateViewModel viewModel) { var model = viewModel.MapToModel(); model.DocumentNo = DocumentNoGenerator(viewModel); EntityExtension.FlagForCreate(model, _identityService.Username, _userAgent); _dbSet.Add(model); await _dbContext.SaveChangesAsync(); var itemModels = viewModel.MapItemToModel().Select(item => { EntityExtension.FlagForCreate(item, _identityService.Username, _userAgent); item.OthersExpenditureProofDocumentId = model.Id; return(item); }).ToList(); _itemDbSet.UpdateRange(itemModels); await _dbContext.SaveChangesAsync(); await _autoJournalService.AutoJournalFromOthersExpenditureProof(viewModel, model.DocumentNo); await _autoDailyBankTransactionService.AutoCreateFromOthersExpenditureProofDocument(model, itemModels); return(_taskDone); }
public async Task <string> Posting(List <int> ids) { var models = _dbContext.OthersExpenditureProofDocuments.Where(entity => ids.Contains(entity.Id)).ToList(); var itemModels = _dbContext.OthersExpenditureProofDocumentItems.Where(entity => ids.Contains(entity.OthersExpenditureProofDocumentId)).ToList(); var result = ""; foreach (var model in models) { if (model.IsPosted) { result += "Nomor " + model.DocumentNo + ", "; } else { var items = itemModels.Where(element => element.OthersExpenditureProofDocumentId == model.Id).ToList(); await _autoJournalService.AutoJournalFromOthersExpenditureProof(model, items); await _autoDailyBankTransactionService.AutoCreateFromOthersExpenditureProofDocument(model, items); model.IsPosted = true; EntityExtension.FlagForUpdate(model, _identityService.Username, _userAgent); await _dbContext.SaveChangesAsync(); } } return(result); }