protected override void PersistNewItem(IShipment entity) { ((Entity)entity).AddingEntity(); var factory = new ShipmentFactory(); var dto = factory.BuildDto(entity); Database.Insert(dto); entity.Key = dto.Key; entity.ResetDirtyProperties(); }
protected override void PersistUpdatedItem(IShipment entity) { ((Entity)entity).UpdatingEntity(); var factory = new ShipmentFactory(); var dto = factory.BuildDto(entity); Database.Update(dto); entity.ResetDirtyProperties(); }
public static void InitDb(IDbContext dbContext) { dbContext.Shipments.AddRange(ShipmentFactory.GetShipments()); dbContext.Users.Add(UserFactory.CreateUser()); dbContext.CharmCategories.AddRange(CharmCategoryFactory.GetCharmCategoriesWithCharms(3, 2)); dbContext.Products.AddRange(ProductFactory.GetNonCharmProducts(3)); dbContext.SaveChanges(); }
/// <summary> /// Gets a collection of all shipments with the option to pass an array of shipment keys /// </summary> /// <param name="keys"> /// The keys. /// </param> /// <returns> /// The <see cref="IEnumerable{IShipment}"/>. /// </returns> protected override IEnumerable <IShipment> PerformGetAll(params Guid[] keys) { var dtos = new List <ShipmentDto>(); if (keys.Any()) { // This is to get around the WhereIn max limit of 2100 parameters and to help with performance of each WhereIn query var keyLists = keys.Split(400).ToList(); // Loop the split keys and get them foreach (var keyList in keyLists) { dtos.AddRange(Database.Fetch <ShipmentDto, ShipmentStatusDto>(GetBaseQuery(false).WhereIn <ShipmentDto>(x => x.Key, keyList, SqlSyntax))); } } else { dtos = Database.Fetch <ShipmentDto, ShipmentStatusDto>(GetBaseQuery(false)); } var factory = new ShipmentFactory(); foreach (var dto in dtos) { var shipment = factory.BuildEntity(dto); ((Shipment)shipment).Items = this.GetLineItems(dto.Key); yield return(shipment); } //if (keys.Any()) //{ // foreach (var key in keys) // { // yield return Get(key); // } //} //else //{ // var factory = new ShipmentFactory(); // var dtos = Database.Fetch<ShipmentDto, ShipmentStatusDto>(GetBaseQuery(false)); // foreach (var dto in dtos) // { // yield return this.Get(dto.Key); // } //} }
protected override IShipment PerformGet(Guid key) { var sql = GetBaseQuery(false) .Where(GetBaseWhereClause(), new { Key = key }); var dto = Database.Fetch <ShipmentDto>(sql).FirstOrDefault(); if (dto == null) { return(null); } var factory = new ShipmentFactory(); var shipment = factory.BuildEntity(dto); return(shipment); }
/// <summary> /// Persists a new shipment record. /// </summary> /// <param name="entity"> /// The entity. /// </param> protected override void PersistNewItem(IShipment entity) { ((Entity)entity).AddingEntity(); var factory = new ShipmentFactory(); var dto = factory.BuildDto(entity); Database.Insert(dto); entity.Key = dto.Key; foreach (var item in entity.Items.ToArray()) { ((IOrderLineItem)item).ShipmentKey = entity.Key; _orderLineItemRepository.SaveLineItem((IOrderLineItem)item); } entity.ResetDirtyProperties(); }
public async Task PrepareNewOrderEmailAsync_Should_Return_Proper_Template() { // arrange var emailTemplate = await File.ReadAllTextAsync("./Resources/Emails/NewOrder.html"); var expected = await File.ReadAllTextAsync("./Resources/Emails/NewOrderExpected.html"); emailTemplateManagerMock.Setup(s => s.ReadTemplateAsync(It.IsAny <string>())).ReturnsAsync(emailTemplate); var order = new Order(UserFactory.CreateUser(), ProductsOrderFactory.GetProductsOrders(), DiscountFactory.GetOrderDiscount(), ShipmentFactory.GetShipment(), 30, 139, "Some comment", null); // var sut = new EmailService(emailTemplateManagerMock.Object); // // //act // var result = await sut.PrepareNewOrderEmailAsync(order); // // // assert // result.Should().BeEquivalentTo(expected); }
protected override IEnumerable <IShipment> PerformGetAll(params Guid[] keys) { if (keys.Any()) { foreach (var key in keys) { yield return(Get(key)); } } else { var factory = new ShipmentFactory(); var dtos = Database.Fetch <ShipmentDto>(GetBaseQuery(false)); foreach (var dto in dtos) { yield return(factory.BuildEntity(dto)); } } }
/// <summary> /// Persists an updated shipment record. /// </summary> /// <param name="entity"> /// The entity. /// </param> protected override void PersistUpdatedItem(IShipment entity) { var query = Querying.Query <IOrderLineItem> .Builder.Where(x => x.ShipmentKey == entity.Key); var existing = _orderLineItemRepository.GetByQuery(query); var removers = existing.Where(x => entity.Items.All(y => y.Key != x.Key)); foreach (var remove in removers) { ((IOrderLineItem)remove).ShipmentKey = null; _orderLineItemRepository.SaveLineItem((IOrderLineItem)remove); } ((Entity)entity).UpdatingEntity(); var factory = new ShipmentFactory(); var dto = factory.BuildDto(entity); Database.Update(dto); entity.ResetDirtyProperties(); }
public static async Task CreateNewShipment(NewShipmentRequest request) { try { var package = PackageFactory.CreatePackage(request.PackageData); await PackageEntity.ValidateNew(package); var shipment = ShipmentFactory.CreateShipment(request); await ShipmentEntity.ValidateNew(shipment); await PackageUseCases.RegisterPackage.Execute(package); await ShipmentUseCases.RegisterShipment.Execute(shipment); await ShipmentUseCases.Set.PackageId(shipment.Id.ToString(), package.Id.ToString()); await ShipmentUseCases.UpdateShipmentWithBoundry(shipment); } catch (Exception e) { throw; } }