private ContractViewModel UpdateContract(Guid id, ContractViewModel contractViewModel) { using (var scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted })) { var contractToUpdate = _db.SignedContracts.Where(sc => sc.SignedContractId == id).FirstOrDefault(); contractToUpdate.ContractIndividualIsActive = contractViewModel.IsActive; var beneficiariesToDelete = _db .Contract_Beneficiary .Where(cb => cb.SignedContractId == contractToUpdate.SignedContractId) .ToList(); _db.RemoveRange(beneficiariesToDelete); if (UpdateBeneficiaries(contractViewModel, contractToUpdate.SignedContractId)) { _db.SaveChanges(); return(contractViewModel); } scope.Complete(); return(null); } }
private async Task RefreshDataBase() { var plots = await HarvesterClient.GetPlotsAsync(); var plotInfos = await DbContext.Plots.ToListAsync(); foreach (var plot in plots) { var plotInfo = plotInfos.FirstOrDefault(x => x.PublicKey == plot.PublicKey); if (plotInfo == null) { plotInfo = new PlotInfo(plot.PublicKey, plot.FileName); DbContext.Plots.Add(plotInfo); } else { plotInfo.FileName = plot.FileName; plotInfos.Remove(plotInfo); } } DbContext.RemoveRange(plotInfos); await DbContext.SaveChangesAsync(); }
/// <summary> /// Update/Delete de Contract Holder /// </summary> /// <param name="id"></param> /// <param name="vm"></param> /// <returns></returns> public ContractHolderViewModel Update(Guid id, ContractHolderViewModel vm) { using (var scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted })) { var individual = _db.Individuals.Where(ind => ind.BeneficiaryId == id).FirstOrDefault(); if (individual == null) { return(null); } var beneficary_addresses = _db.Beneficiary_Address.Where(benAd => benAd.BeneficiaryId == individual.BeneficiaryId).ToList(); var individual_telephones = _db.Individual_Telephone.Where(indTel => indTel.BeneficiaryId == individual.BeneficiaryId).ToList(); //Soft Delete if (vm.isDeleted) { if (_db.SignedContracts.Where(sigCon => (sigCon.ContractIndividualIsActive == true) && (sigCon.IndividualId == id)).Any()) { return(null); } individual.IsDeleted = vm.isDeleted; _db.Update(individual); } //Update else { if (Factories.IndividualFactory.Create(vm) == null || Factories.AddressFactory.CreateList(vm.individualAddresses).Count() != vm.individualAddresses.Count() || Factories.TelephoneFactory.CreateList(vm.individualTelephones).Count() != vm.individualTelephones.Count()) { return(null); } else if (individual.IndividualCPF != vm.individualCPF) { return(null); } individual.IndividualBirthdate = vm.individualBirthdate; individual.IndividualCPF = vm.individualCPF; individual.IndividualEmail = vm.individualEmail; individual.IndividualName = vm.individualName; individual.IndividualRG = vm.individualRG; _db.Update(individual); if (beneficary_addresses.Count() > 0) { _db.RemoveRange(beneficary_addresses); } if (individual_telephones.Count() > 0) { _db.RemoveRange(individual_telephones); } _db.AddRange(vm.individualAddresses); _db.AddRange(vm.individualTelephones); foreach (var benAdd in vm.individualAddresses) { _db.Add(new BeneficiaryAddress { BeneficiaryAddressId = Guid.NewGuid(), BeneficiaryId = individual.BeneficiaryId, AddressId = benAdd.AddressId }); } foreach (var indTel in vm.individualTelephones) { _db.Add(new BeneficiaryTelephone { BeneficiaryTelephoneId = Guid.NewGuid(), BeneficiaryId = individual.BeneficiaryId, TelephoneId = indTel.TelephoneId }); } } _db.SaveChanges(); scope.Complete(); return(vm); } }