private async Task UpdateDetails(Guid OrdinaryID, Guid IndemnizationOverID, List <Guid> OrdinaryOverDetailsIDs, List <Guid> IndemnizationOverDetailsIDs, Guid identityWorkId, Guid instanceID) { var manager = new MiddlewareManager <OverdraftDetail>(new BaseRecordManager <OverdraftDetail>(), new OverdraftDetailValidator()); var allGuids = new List <Guid>(OrdinaryOverDetailsIDs); allGuids.AddRange(IndemnizationOverDetailsIDs); var allDetailsDelete = await manager.FindByExpressionAsync(x => x.InstanceID == instanceID && (x.OverdraftID == IndemnizationOverID || x.OverdraftID == OrdinaryID), identityWorkId, new string[] { "ConceptPayment" }); var allDetails = allDetailsDelete.Where(x => OrdinaryOverDetailsIDs.Contains(x.ID) || IndemnizationOverDetailsIDs.Contains(x.ID)).ToList(); var oldOrdinaryDetailsCompensation = allDetailsDelete.Where(x => x.OverdraftID == OrdinaryID && (x.ConceptPayment.Code == ISRFINIQUITOCONCEPTCODE || COMPENSATIONSATCODES.Contains(x.ConceptPayment.SATGroupCode))).ToList(); allDetails.Where(x => OrdinaryOverDetailsIDs.Contains(x.ID)).AsParallel().ForAll(y => { y.OverdraftID = OrdinaryID; y.ConceptPayment = null; }); //se elimina porke no hace nada //allDetails.Where(x => OrdinaryOverDetailsIDs.Contains(x.ID)).Where(p => p.Active); allDetails.Where(x => IndemnizationOverDetailsIDs.Contains(x.ID)).AsParallel().ForAll(y => { y.OverdraftID = IndemnizationOverID; y.ConceptPayment = null; }); await manager.UpdateAsync(allDetails, identityWorkId); if (oldOrdinaryDetailsCompensation.Any()) { oldOrdinaryDetailsCompensation.AsParallel().ForAll(item => item.ConceptPayment = null); await manager.DeleteAsync(oldOrdinaryDetailsCompensation.Select(x => x.ID).ToList(), identityWorkId); } }
public async Task UpdateAmountAsync(UpdateAmountConceptDetailParams parameters) { Guid OverdraftDetailID = parameters.OverdraftDetailID; Decimal Amount = parameters.Amount; List <ConceptRelationUpdateAmountDTO> ConceptRelationsAmountApplied = parameters.ConceptRelationsAmountApplied; Guid identityWorkID = parameters.IdentityWorkID; Guid instanceID = parameters.InstanceID; var ids = ConceptRelationsAmountApplied.Select(x => x.ID); var relationDetailDB = _mgrEmployeeConceptsRelationDetail.FindByExpressionAsync(x => ids.Contains(x.ID) && x.InstanceID == instanceID, identityWorkID); var overdraftdetailDB = _clientOverdraftDetail.FindByExpressionAsync(x => x.ID == OverdraftDetailID && x.InstanceID == instanceID, identityWorkID); var details = (await relationDetailDB); details.ForEach(item => { item.AmountApplied = ConceptRelationsAmountApplied.FirstOrDefault(x => x.ID == item.ID) != null ? ConceptRelationsAmountApplied.FirstOrDefault(x => x.ID == item.ID).AmountApplied : 0; item.IsAmountAppliedCapturedByUser = ConceptRelationsAmountApplied.FirstOrDefault(x => x.ID == item.ID) != null ? ConceptRelationsAmountApplied.FirstOrDefault(x => x.ID == item.ID).IsAmountAppliedCapturedByUser : false; }); var overDetails = (await overdraftdetailDB); overDetails.ForEach(item => { item.Amount = Amount; item.IsTotalAmountCapturedByUser = details.Any(x => x.IsAmountAppliedCapturedByUser); }); using (var scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) { await _mgrEmployeeConceptsRelationDetail.UpdateAsync(details, identityWorkID); await _clientOverdraftDetail.UpdateAsync(overDetails, identityWorkID); scope.Complete(); } }
private async Task UpdateEmployee(CalculateSettlementProcessParams parameters, Employee employee) { employee.SettlementSalaryBase = parameters.SettlementBaseSalary; var employeeManager = new MiddlewareManager <Employee>(new BaseRecordManager <Employee>(), new EmployeeValidator()); await employeeManager.UpdateAsync(new List <Employee>() { employee }, parameters.IdentityWorkID); }