public CustomersDto SaveCustomer(CustomersDto customer)
        {
            using (var db = new GapInsuranceDBModel())
            {
                if (!db.Clients.Any(x => x.Id == customer.ClientId))
                {
                    throw new KeyNotFoundException("Client not found");
                }

                Customers dbCustomer = null;

                if (customer.Id > 0)
                {
                    dbCustomer = db.Customers.FirstOrDefault(x => x.Id == customer.Id);
                }

                if (dbCustomer == null)
                {
                    dbCustomer = new Customers();
                    db.Customers.Add(dbCustomer);
                }

                dbCustomer.FirstName = customer.FirstName;
                dbCustomer.LastName  = customer.LastName;
                dbCustomer.ClientId  = db.Clients.FirstOrDefault(x => x.Id == customer.ClientId).Id;


                db.SaveChanges();

                return(Mapper.Map <Customers, CustomersDto>(dbCustomer));
            }
        }
        public CoveragesDto SaveCoverage(CoveragesDto coverage)
        {
            using (var db = new GapInsuranceDBModel())
            {
                Coverages dbCoverage;

                if (coverage.Id > 0)
                {
                    dbCoverage = db.Coverages.FirstOrDefault(x => x.Id == coverage.Id);

                    if (dbCoverage == null)
                    {
                        throw new KeyNotFoundException("Coverage doesn't exists");
                    }
                }
                else
                {
                    dbCoverage = new Coverages();
                    db.Coverages.Add(dbCoverage);
                }

                dbCoverage.Name = coverage.Name;

                db.SaveChanges();

                return(Mapper.Map <Coverages, CoveragesDto>(dbCoverage));
            }
        }
        public ClientsDto SaveClient(ClientsDto client)
        {
            using (var db = new GapInsuranceDBModel())
            {
                Clients dbClient;

                if (client.Id > 0)
                {
                    dbClient = db.Clients.FirstOrDefault(x => x.Id == client.Id);

                    if (dbClient == null)
                    {
                        throw new KeyNotFoundException("Client doesn't exists");
                    }
                }
                else
                {
                    dbClient = new Clients();
                    db.Clients.Add(dbClient);
                }

                dbClient.Name = client.Name;

                db.SaveChanges();

                return(Mapper.Map <Clients, ClientsDto>(dbClient));
            }
        }
        public Customer_PoliciesDto SaveCustomerPolicy(Customer_PoliciesDto custPolicy)
        {
            using (var db = new GapInsuranceDBModel())
            {
                Customer_Policies dbCustPolicy = null;

                //TODO. change throw exceptions since this is not very testable.
                if (custPolicy.CoverPercentage > 100)
                {
                    throw new InvalidOperationException("Cover percentage can't be higher than 100%");
                }

                if (!db.Customers.Any(x => x.Id == custPolicy.CustomerId))
                {
                    throw new KeyNotFoundException("Customer not found");
                }

                if (!db.Policies.Any(x => x.Id == custPolicy.PolicyId))
                {
                    throw new KeyNotFoundException("Policy not found");
                }

                if (custPolicy.RiskType == RiskType.High && custPolicy.CoverPercentage > 50)
                {
                    throw new InvalidOperationException("Cover percentage can't be higher than 50% when risk is high");
                }

                if (custPolicy.Id > 0)
                {
                    dbCustPolicy = db.Customer_Policies.FirstOrDefault(o => o.Id == custPolicy.Id);
                }

                if (dbCustPolicy == null)
                {
                    dbCustPolicy = new Customer_Policies();
                    db.Customer_Policies.Add(dbCustPolicy);
                }

                dbCustPolicy.PolicyId        = db.Policies.FirstOrDefault(x => x.Id == custPolicy.PolicyId).Id;
                dbCustPolicy.StartDate       = custPolicy.StartDate;
                dbCustPolicy.EndDate         = custPolicy.EndDate;
                dbCustPolicy.Price           = custPolicy.Price;
                dbCustPolicy.RiskType        = (int)custPolicy.RiskType;
                dbCustPolicy.CustomerId      = db.Customers.FirstOrDefault(x => x.Id == custPolicy.CustomerId).Id;
                dbCustPolicy.Active          = custPolicy.Active;
                dbCustPolicy.CoverPercentage = custPolicy.CoverPercentage;

                db.SaveChanges();

                return(Mapper.Map <Customer_Policies, Customer_PoliciesDto>(dbCustPolicy));
            }
        }
        public PoliciesDto GetPolicy(int id)
        {
            using (var db = new GapInsuranceDBModel())
            {
                var policy = db.Policies.FirstOrDefault(x => x.Id == id);

                if (policy != null)
                {
                    return(Mapper.Map <Policies, PoliciesDto>(policy));
                }
            }

            return(null);
        }
        public IList <PoliciesDto> GetPolicies()
        {
            using (var db = new GapInsuranceDBModel())
            {
                var policies = db.Policies.ToList();

                if (policies?.Any() == true)
                {
                    return(policies.Select(x => Mapper.Map <Policies, PoliciesDto>(x)).ToList());
                }
            }

            return(null);
        }
        public IList <CoveragesDto> GetCoverages()
        {
            using (var db = new GapInsuranceDBModel())
            {
                var c = db.Coverages.ToList();

                if (c?.Any() == true)
                {
                    return(c.Select(x => Mapper.Map <Coverages, CoveragesDto>(x)).ToList());
                }
            }

            return(null);
        }
        public CoveragesDto GetCoverage(int id)
        {
            using (var db = new GapInsuranceDBModel())
            {
                var client = db.Coverages.FirstOrDefault(x => x.Id == id);

                if (client != null)
                {
                    return(Mapper.Map <Coverages, CoveragesDto>(client));
                }
            }

            return(null);
        }
        public IList <ClientsDto> GetClients()
        {
            using (var db = new GapInsuranceDBModel())
            {
                var clients = db.Clients.ToList();

                if (clients?.Any() == true)
                {
                    return(clients.Select(x => Mapper.Map <Clients, ClientsDto>(x)).ToList());
                }
            }

            return(null);
        }
Beispiel #10
0
        public CustomersDto GetCustomer(int id)
        {
            using (var db = new GapInsuranceDBModel())
            {
                var customer = db.Customers.FirstOrDefault(x => x.Id == id);

                if (customer != null)
                {
                    return(Mapper.Map <Customers, CustomersDto>(customer));
                }
            }

            return(null);
        }
Beispiel #11
0
        public IList <CustomersDto> GetCustomers()
        {
            using (var db = new GapInsuranceDBModel())
            {
                var customers = db.Customers.ToList();

                if (customers?.Any() == true)
                {
                    return(customers.Select(x => Mapper.Map <Customers, CustomersDto>(x)).ToList());
                }
            }

            return(null);
        }
        public bool DeleteCoverage(int id)
        {
            using (var db = new GapInsuranceDBModel())
            {
                var c       = db.Coverages.FirstOrDefault(x => x.Id == id);
                int deleted = 0;

                if (c != null)
                {
                    db.Coverages.Remove(c);

                    deleted = db.SaveChanges();
                }

                return(deleted > 0);
            }
        }
Beispiel #13
0
        public bool DeletePolicy(int id)
        {
            using (var db = new GapInsuranceDBModel())
            {
                var policy = db.Policies
                             .Include(p => p.Coverages)
                             .FirstOrDefault(x => x.Id == id);
                int deleted = 0;

                if (policy != null)
                {
                    policy.Coverages.Clear();
                    db.Policies.Remove(policy);

                    deleted = db.SaveChanges();
                }

                return(deleted > 0);
            }
        }
Beispiel #14
0
        public PoliciesDto SavePolicy(PoliciesDto policy)
        {
            using (var db = new GapInsuranceDBModel())
            {
                Policies dbPolicy = null;

                if (policy.Id > 0)
                {
                    dbPolicy = db.Policies.FirstOrDefault(o => o.Id == policy.Id);
                }

                if (dbPolicy == null)
                {
                    dbPolicy = new Policies();
                    db.Policies.Add(dbPolicy);
                }

                dbPolicy.Name        = policy.Name;
                dbPolicy.Description = policy.Description;

                var dbCoverages      = policy.Coverages.Select(od => Mapper.Map <CoveragesDto, Coverages>(od));
                var deletedCoverages = dbPolicy.Coverages.Where(c => !dbCoverages.Select(dbC => dbC.Id).Contains(c.Id)).ToList();
                var addedCoverages   = dbCoverages.Where(x => !dbPolicy.Coverages.Select(n => n.Id).Contains(x.Id)).ToList();

                deletedCoverages.ForEach(d => dbPolicy.Coverages.Remove(d));

                addedCoverages.ForEach(nc =>
                {
                    dbPolicy.Coverages.Add(db.Coverages.FirstOrDefault(x => x.Id == nc.Id));
                });

                db.SaveChanges();

                return(Mapper.Map <Policies, PoliciesDto>(dbPolicy));
            }
        }