public async Task UpdatePayrollEntryDocumentUnit(PayrollEntryDocumentInputUnit input) { var payrollEntryDocumentUnit = await _payrollEntryDocumentUnitRepository.GetAsync(input.AccountingDocumentId); Mapper.Map(input, payrollEntryDocumentUnit); await _payrollEntryDocumentUnitManager.UpdateAsync(payrollEntryDocumentUnit); if (!ReferenceEquals(input.PayrollEntryDocumentDetailInputList, null)) { //Bulk CRUD operations of PayrollEntryDocumentDetailInputList foreach (var payrollEntryDocumentDetail in input.PayrollEntryDocumentDetailInputList) { if (payrollEntryDocumentDetail.AccountingItemId == 0) { payrollEntryDocumentDetail.AccountingDocumentId = input.AccountingDocumentId; await CreatePayrollEntryDocumentDetailsUnit(payrollEntryDocumentDetail); } else if (payrollEntryDocumentDetail.AccountingItemId > 0) { await UpdatePayrollEntryDocumentDetailsUnit(payrollEntryDocumentDetail); } else { IdInput <long> idInput = new IdInput <long>() { Id = (payrollEntryDocumentDetail.AccountingItemId * (-1)) }; await _payrollEntryDocumentDetailUnitManager.DeleteAsync(idInput); } } } await CurrentUnitOfWork.SaveChangesAsync(); }
public async Task <IdOutputDto <long> > CreatePayrollEntryDocumentUnit(PayrollEntryDocumentInputUnit input) { var payrollEntryDocumentUnit = input.MapTo <PayrollEntryDocumentUnit>(); IdOutputDto <long> response = new IdOutputDto <long> { Id = await _payrollEntryDocumentUnitManager.CreateAsync(payrollEntryDocumentUnit) }; //Null Checking of PayrollEntryDocumentDetailInputList if (!ReferenceEquals(input.PayrollEntryDocumentDetailInputList, null)) { //Bulk Insertion of payrollEntryDocumentDetail foreach (var payrollEntryDocumentDetail in input.PayrollEntryDocumentDetailInputList) { payrollEntryDocumentDetail.AccountingDocumentId = response.Id; await CreatePayrollEntryDocumentDetailsUnit(payrollEntryDocumentDetail); } } await CurrentUnitOfWork.SaveChangesAsync(); return(response); }