public async Task <int> UpdateAsync(int id, PackingReceiptModel model)
        {
            packingReceiptLogic.UpdateModelAsync(id, model);
            await this.packingReceiptLogic.UpdatePacking(model, false);

            await this.packingReceiptLogic.UpdateInventory(model);

            return(await dbContext.SaveChangesAsync());
        }
        public async Task <int> CreateAsync(PackingReceiptModel model)
        {
            do
            {
                model.Code = CodeGenerator.Generate();
            }while (dbSet.Any(d => d.Code.Equals(model.Code)));
            this.packingReceiptLogic.CreateModel(model);

            await this.packingReceiptLogic.UpdatePacking(model, true);
            await CreateInventory(model);

            return(await dbContext.SaveChangesAsync());
        }
        private async Task CreateInventory(PackingReceiptModel model)
        {
            var client = ServiceProvider.GetService <IHttpClientService>();

            var uri = string.Format("{0}{1}", APIEndpoint.Inventory, "inventory-documents");

            InventoryDocumentViewModel inventoryDoc = new InventoryDocumentViewModel();

            inventoryDoc.referenceNo = "RFNO" + " - " + model.Code;
            string referenceType = string.IsNullOrWhiteSpace(model.StorageName) ? model.StorageName : "";

            inventoryDoc.referenceType = $"Penerimaan Packing {referenceType}";
            inventoryDoc.remark        = " ";
            inventoryDoc.type          = "IN";
            inventoryDoc.date          = DateTime.UtcNow;
            inventoryDoc.storageId     = (model.StorageId);
            inventoryDoc.storageCode   = (model.StorageCode);
            inventoryDoc.storageName   = model.StorageName;

            inventoryDoc.items = new List <InventoryDocumentItemViewModel>();

            foreach (var item in model.Items)
            {
                var data = new InventoryDocumentItemViewModel
                {
                    productCode   = item.ProductCode,
                    productName   = item.Product,
                    productId     = item.ProductId,
                    remark        = item.Remark,
                    quantity      = item.Quantity,
                    uomId         = item.UomId,
                    stockPlanning = 0,
                    uom           = item.Uom
                };
                inventoryDoc.items.Add(data);
            }

            var myContentJson = JsonConvert.SerializeObject(inventoryDoc, new JsonSerializerSettings {
                NullValueHandling = NullValueHandling.Ignore
            });
            var myContent = new StringContent(myContentJson, Encoding.UTF8, "application/json");
            var response  = await client.PostAsync(uri, myContent);

            response.EnsureSuccessStatusCode();
        }