Exemple #1
0
 public GarmentSewingInItemDto(GarmentSewingInItem garmentSewingInItem)
 {
     Id                = garmentSewingInItem.Identity;
     SewingInId        = garmentSewingInItem.SewingInId;
     SewingOutItemId   = garmentSewingInItem.SewingOutItemId;
     SewingOutDetailId = garmentSewingInItem.SewingOutDetailId;
     LoadingItemId     = garmentSewingInItem.LoadingItemId;
     Product           = new Product(garmentSewingInItem.ProductId.Value, garmentSewingInItem.ProductCode, garmentSewingInItem.ProductName);
     DesignColor       = garmentSewingInItem.DesignColor;
     Size              = new SizeValueObject(garmentSewingInItem.SizeId.Value, garmentSewingInItem.SizeName);
     Quantity          = garmentSewingInItem.Quantity;
     Uom               = new Uom(garmentSewingInItem.UomId.Value, garmentSewingInItem.UomUnit);
     Color             = garmentSewingInItem.Color;
     RemainingQuantity = garmentSewingInItem.RemainingQuantity;
     BasicPrice        = garmentSewingInItem.BasicPrice;
     Price             = garmentSewingInItem.Price;
 }
        public async Task <GarmentSewingIn> Handle(PlaceGarmentSewingInCommand request, CancellationToken cancellationToken)
        {
            request.Items = request.Items.Where(item => item.IsSave == true).ToList();

            GarmentSewingIn garmentSewingIn = new GarmentSewingIn(
                Guid.NewGuid(),
                GenerateSewingInNo(request),
                request.SewingFrom,
                request.LoadingId,
                request.LoadingNo,
                new UnitDepartmentId(request.UnitFrom.Id),
                request.UnitFrom.Code,
                request.UnitFrom.Name,
                new UnitDepartmentId(request.Unit.Id),
                request.Unit.Code,
                request.Unit.Name,
                request.RONo,
                request.Article,
                new GarmentComodityId(request.Comodity.Id),
                request.Comodity.Code,
                request.Comodity.Name,
                request.SewingInDate.GetValueOrDefault()
                );

            foreach (var item in request.Items)
            {
                GarmentSewingInItem garmentSewingInItem = new GarmentSewingInItem(
                    Guid.NewGuid(),
                    garmentSewingIn.Identity,
                    item.SewingOutItemId,
                    item.SewingOutDetailId,
                    item.LoadingItemId,
                    item.FinishingOutItemId,
                    item.FinishingOutDetailId,
                    new ProductId(item.Product.Id),
                    item.Product.Code,
                    item.Product.Name,
                    item.DesignColor,
                    new SizeId(item.Size.Id),
                    item.Size.Size,
                    item.Quantity,
                    new UomId(item.Uom.Id),
                    item.Uom.Unit,
                    item.Color,
                    item.Quantity,
                    item.BasicPrice,
                    item.Price
                    );

                if (request.SewingFrom == "CUTTING")
                {
                    var garmentLoadingItem = _garmentLoadingItemRepository.Query.Where(o => o.Identity == item.LoadingItemId).Select(s => new GarmentLoadingItem(s)).Single();

                    garmentLoadingItem.SetRemainingQuantity(garmentLoadingItem.RemainingQuantity - item.Quantity);

                    garmentLoadingItem.Modify();
                    await _garmentLoadingItemRepository.Update(garmentLoadingItem);
                }
                else if (request.SewingFrom == "SEWING")
                {
                    var garmentSewingOutItem = _garmentSewingOutItemRepository.Query.Where(s => s.Identity == item.SewingOutItemId).Select(s => new GarmentSewingOutItem(s)).Single();

                    garmentSewingOutItem.SetRemainingQuantity(garmentSewingOutItem.RemainingQuantity - item.Quantity);

                    garmentSewingOutItem.Modify();
                    await _garmentSewingOutItemRepository.Update(garmentSewingOutItem);
                }
                else if (request.SewingFrom == "FINISHING")
                {
                    var garmentFinishingOutItem = _garmentFinishingOutItemRepository.Query.Where(s => s.Identity == item.FinishingOutItemId).Select(s => new GarmentFinishingOutItem(s)).Single();

                    garmentFinishingOutItem.SetRemainingQuantity(garmentFinishingOutItem.RemainingQuantity - item.Quantity);

                    garmentFinishingOutItem.Modify();
                    await _garmentFinishingOutItemRepository.Update(garmentFinishingOutItem);
                }

                await _garmentSewingInItemRepository.Update(garmentSewingInItem);
            }

            await _garmentSewingInRepository.Update(garmentSewingIn);

            _storage.Save();

            return(garmentSewingIn);
        }