public void Can_SearchByDate() { var production1 = new Models.Data.EggProduction { Id = Guid.NewGuid(), Date = DateTime.Today, }; var production2 = new Models.Data.EggProduction { Id = Guid.NewGuid(), Date = DateTime.Today.AddDays(-3) }; using (var conn = factory.OpenDbConnection()) { conn.InsertParam(production1); conn.InsertParam(production2); } var result = service.Search(new DateRangeSearchInfo { Start = DateTime.Today.AddDays(-1), End = DateTime.Today.AddDays(10), PageIndex = 1, PageSize = 10 }); Assert.Equal(1, result.Total); Compare(production1, null, result.Items[0]); }
private EggProduction MapDataToModel(Models.Data.EggProduction eggData, IList <Models.Data.EggProductionDetail> detailsData) { var production = Mapper.Map <Models.Data.EggProduction, EggProduction>(eggData); if (production != null) { foreach (var detailData in detailsData) { var detail = Mapper.Map <Models.Data.EggProductionDetail, EggProductionDetail>(detailData); production.Details.Add(detail); } } return(production); }
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); }
void Compare(Models.Data.EggProduction productionData, List <Models.Data.EggProductionDetail> details, Models.EggProduction production) { Assert.Equal(productionData.Id, production.Id); Assert.Equal(productionData.Date, production.Date); if (details != null) { Assert.Equal(details.Count, production.Details.Count); foreach (var detailData in details) { var detail = production.Details.FirstOrDefault(d => d.HouseId == detailData.HouseId); Assert.Equal(detailData.CrackedEggCount, detail.CrackedEggCount); Assert.Equal(detailData.Fcr, detail.Fcr); Assert.Equal(detailData.GoodEggCount, detail.GoodEggCount); Assert.Equal(detailData.HouseId, detail.HouseId); Assert.Equal(detailData.RetailQuantity, detail.RetailQuantity); } } }
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_SaveExistingEggProduction() { 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 = new Models.EggProduction { Id =id, Date = DateTime.Today, Details = new List<EggProductionDetail>() { new Models.EggProductionDetail { CrackedEggCount = 2, Fcr = 2, GoodEggCount = 2, HouseId = house.Id, RetailQuantity = 1.7m } } }; service.Save(production); using (var conn = factory.OpenDbConnection()) { 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); }
public void Save(EggProduction production) { using (var db = factory.OpenDbConnection()) { using (var tx = db.OpenTransaction()) { bool isNew = production.IsNew; Models.Data.EggProduction productionData = null; if (isNew) { productionData = db.FirstOrDefault <Models.Data.EggProduction>(u => u.Date == production.Date); } else { productionData = db.Query <Models.Data.EggProduction>("Date = @Date and Id <> @Id", new { Date = production.Date, Id = production.Id.ToString() }) .FirstOrDefault(); } if (productionData != null) { tx.Rollback(); throw new ServiceException("EggProduction_DuplicateDate"); } if (isNew) { production.Id = Guid.NewGuid(); } productionData = Mapper.Map <EggProduction, Models.Data.EggProduction>(production); if (isNew) { db.InsertParam(productionData); } else { db.UpdateParam(productionData); } if (!isNew) { db.Delete <Models.Data.EggProductionDetail>(where : "ProductionId = {0}".Params(productionData.Id.ToString())); } foreach (var detail in production.Details) { var detailData = Mapper.Map <EggProductionDetail, Models.Data.EggProductionDetail>(detail); detailData.ProductionId = production.Id; db.InsertParam(detailData); } try { tx.Commit(); } catch (Exception ex) { tx.Rollback(); throw new ServiceException(ex.Message); } } } }
public void Can_SaveExistingEggProduction() { 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 = new Models.EggProduction { Id = id, Date = DateTime.Today, Details = new List <EggProductionDetail>() { new Models.EggProductionDetail { CrackedEggCount = 2, Fcr = 2, GoodEggCount = 2, HouseId = house.Id, RetailQuantity = 1.7m } } }; service.Save(production); using (var conn = factory.OpenDbConnection()) { 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); } }