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);
            }
        }
Exemple #2
0
        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);
 }