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); } }
private async Task DeleteOverdrafts(List <Overdraft> overdrafts, Guid identityWorkID) { if (overdrafts != null && overdrafts.Any()) { var detailManager = new MiddlewareManager <OverdraftDetail>(new BaseRecordManager <OverdraftDetail>(), new OverdraftDetailValidator()); var overManager = new MiddlewareManager <Overdraft>(new BaseRecordManager <Overdraft>(), new OverdraftValidator()); var detailToDelete = overdrafts.SelectMany(x => x.OverdraftDetails).Select(x => x.ID).ToList(); if (detailToDelete.Any()) { await detailManager.DeleteAsync(detailToDelete, identityWorkID); } await overManager.DeleteAsync(overdrafts.Select(x => x.ID).ToList(), identityWorkID); } }