public void Save(Models.HenHouse model)
 {
     if (model.IsNew)
     {
         CreatePostRequest(model);
     }
     else
     {
         CreatePutRequest(model.Id, model);
     }
 }
        public void Cant_SaveNewEggProduction_WithDuplicateDate()
        {
            var data1 = new Models.Data.EggProduction
            {
                Id   = Guid.NewGuid(),
                Date = DateTime.Today
            };

            var house = new Models.HenHouse
            {
                Id           = Guid.NewGuid(),
                Name         = "House 1",
                PurchaseCost = 1,
                Depreciation = 1,
                YearUsage    = 1,
                Active       = true
            };

            using (var conn = factory.OpenDbConnection())
            {
                conn.InsertParam(house);
                conn.InsertParam(data1);
            }

            var production = new Models.EggProduction
            {
                Date    = DateTime.Today,
                Details = new List <EggProductionDetail>()
                {
                    new Models.EggProductionDetail
                    {
                        CrackedEggCount = 1,
                        Fcr             = 1,
                        GoodEggCount    = 1,
                        HouseId         = house.Id,
                        RetailQuantity  = 1.2m
                    }
                }
            };

            Assert.Throws <ServiceException>(() => service.Save(production));
        }
        public void Can_GetById()
        {
            var id = Guid.NewGuid();

            var house = new Models.HenHouse
            {
                Id           = Guid.NewGuid(),
                Name         = "House 1",
                PurchaseCost = 1,
                Depreciation = 1,
                YearUsage    = 1,
                Active       = true
            };


            var data = new Models.Data.EggProduction
            {
                Id   = id,
                Date = DateTime.Today
            };
            var detail = new Models.Data.EggProductionDetail
            {
                CrackedEggCount = 1,
                Fcr             = 1,
                GoodEggCount    = 1,
                HouseId         = house.Id,
                ProductionId    = id,
                RetailQuantity  = 1.2m
            };

            using (var conn = factory.OpenDbConnection())
            {
                conn.InsertParam(house);
                conn.InsertParam(data);
                conn.InsertParam(detail);
            }

            var production = service.Get(id);

            Compare(data, null, production);
        }
        public void Can_SaveNewEggProduction()
        {
            var house = new Models.HenHouse
            {
                Id           = Guid.NewGuid(),
                Name         = "House 1",
                PurchaseCost = 1,
                Depreciation = 1,
                YearUsage    = 1,
                Active       = true
            };

            using (var conn = factory.OpenDbConnection())
            {
                conn.InsertParam(house);
            }

            var production = new Models.EggProduction
            {
                Date    = DateTime.Today,
                Details = new List <EggProductionDetail>()
                {
                    new Models.EggProductionDetail
                    {
                        CrackedEggCount = 1,
                        Fcr             = 1,
                        GoodEggCount    = 1,
                        HouseId         = house.Id,
                        RetailQuantity  = 1.2m
                    }
                }
            };

            service.Save(production);
            using (var conn = factory.OpenDbConnection())
            {
                var data    = conn.FirstOrDefault <Models.Data.EggProduction>(e => e.Date == production.Date);
                var details = conn.Where <Models.Data.EggProductionDetail>(new { ProductionId = data.Id });
                Compare(data, details, production);
            }
        }
        public void Cant_SaveExistingEggProduction_WithDuplicateDate()
        {
            var id = Guid.NewGuid();

            var house = new Models.HenHouse
            {
                Id = Guid.NewGuid(),
                Name = "House 1",
                PurchaseCost = 1,
                Depreciation = 1,
                YearUsage = 1,
                Active = true
            };

            var data = new Models.Data.EggProduction
            {
                Id = id,
                Date = DateTime.Today
            };

            var data2 = new Models.Data.EggProduction
                {
                    Id = Guid.NewGuid(),
                    Date = DateTime.Today.AddDays(-1)
                };

            var detail = new Models.Data.EggProductionDetail
            {
                CrackedEggCount = 1,
                Fcr = 1,
                GoodEggCount = 1,
                HouseId = house.Id,
                ProductionId = id,
                RetailQuantity = 1.2m
            };

            using (var conn = factory.OpenDbConnection())
            {
                conn.InsertParam(house);
                conn.InsertParam(data);
                conn.InsertParam(detail);
                conn.InsertParam(data2);
            }

            var production = new Models.EggProduction
            {
                Id = id,
                Date = DateTime.Today.AddDays(-1),
                Details = new List<EggProductionDetail>()
                        {
                            new Models.EggProductionDetail
                                {
                                    CrackedEggCount = 2,
                                    Fcr = 2,
                                    GoodEggCount = 2,
                                    HouseId = house.Id,
                                    RetailQuantity = 1.7m
                                }
                        }
            };

            Assert.Throws<ServiceException>(() => service.Save(production));
        }
        public void Can_SaveNewEggProduction()
        {
            var house = new Models.HenHouse
            {
                Id = Guid.NewGuid(),
                Name = "House 1",
                PurchaseCost = 1,
                Depreciation = 1,
                YearUsage = 1,
                Active = true
            };

            using (var conn = factory.OpenDbConnection())
            {
                conn.InsertParam(house);
            }

            var production = new Models.EggProduction
                {
                    Date = DateTime.Today,
                    Details = new List<EggProductionDetail>()
                        {
                            new Models.EggProductionDetail
                                {
                                    CrackedEggCount = 1,
                                    Fcr = 1,
                                    GoodEggCount = 1,
                                    HouseId = house.Id,
                                    RetailQuantity = 1.2m
                                }
                        }
                };
            service.Save(production);
            using (var conn = factory.OpenDbConnection())
            {
                var data = conn.FirstOrDefault<Models.Data.EggProduction>(e => e.Date == production.Date);
                var details = conn.Where<Models.Data.EggProductionDetail>(new { ProductionId = data.Id });
                Compare(data, details, production);
            }
        }
        public void Can_GetById()
        {
            var id = Guid.NewGuid();

            var house = new Models.HenHouse
                {
                    Id = Guid.NewGuid(),
                    Name = "House 1",
                    PurchaseCost = 1,
                    Depreciation = 1,
                    YearUsage = 1,
                    Active = true
                };

            var data = new Models.Data.EggProduction
                {
                    Id=id,
                    Date=DateTime.Today
                };
            var detail = new Models.Data.EggProductionDetail
                {
                    CrackedEggCount = 1,
                    Fcr = 1,
                    GoodEggCount = 1,
                    HouseId = house.Id,
                    ProductionId = id,
                    RetailQuantity = 1.2m
                };

            using (var conn = factory.OpenDbConnection())
            {
                conn.InsertParam(house);
                conn.InsertParam(data);
                conn.InsertParam(detail);
            }

            var production = service.Get(id);
            Compare(data, null, production);
        }