예제 #1
0
        private void Seed()
        {
            using (var context = new ConfigurationContext(ContextOptions))
            {
                context.Database.EnsureDeleted();
                context.Database.EnsureCreated();

                IEnumerable <User> users = Enumerable.Range(1, 20)
                                           .Select(x =>
                {
                    var user = new User
                    {
                        FirstName = $"Tal_{x}",
                        LastName  = $"Almog_{x}",
                        Username  = $"TalAlmog45_{x}",
                        Email     = $"email_{x}"
                    };

                    using (var hmac = new HMACSHA512())
                    {
                        user.PasswordSalt = hmac.Key;
                        user.PasswordHash = hmac.ComputeHash(Encoding.UTF8.GetBytes("test-password"));
                    }

                    return(user);
                });


                context.AddRange(users);
                context.SaveChanges();
            }
        }
        /// <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);
            }
        }