public async Task <IActionResult> Edit(int id)
        {
            AppResult result = new AppResult();

            try
            {
                OrderMaster model = await _context.OrderMasters.Where(a => a.Id == id).Include(a => a.OrderDetails).FirstOrDefaultAsync();

                OrderMastViewModel modelvm = new OrderMastViewModel
                {
                    Id                 = model.Id,
                    CustomerName       = model.CustomerName,
                    OrderDate          = model.OrderDate,
                    OrderDetlViewModel = model.OrderDetails.Select(a => new OrderDetlViewModel
                    {
                        Id          = a.Id,
                        MastId      = a.MastId,
                        ProductName = a.ProductName,
                        Qty         = a.Qty,
                        Rate        = a.Rate
                    }).ToList()
                };
                return(PartialView(modelvm));
            }
            catch (Exception ex)
            {
                result = new AppResult {
                    ResultType = ResultType.Failed, Message = "Exception occur with the system. please contact to vendor."
                };
                return(Json(result));
            }
        }
        public async Task <IActionResult> Edit(OrderMastViewModel data)
        {
            AppResult result = new AppResult();

            try
            {
                if (ModelState.IsValid)
                {
                    OrderMaster model = new OrderMaster
                    {
                        Id           = data.Id,
                        CustomerName = data.CustomerName,
                        OrderDate    = data.OrderDate,
                        OrderDetails = data.OrderDetlViewModel.Where(a => a.Flag == Flag.New).Select(a => new OrderDetails
                        {
                            Id          = a.Id,
                            MastId      = a.MastId,
                            ProductName = a.ProductName,
                            Qty         = a.Qty,
                            Rate        = a.Rate
                        }).ToList()
                    };
                    List <OrderDetails> detl = data.OrderDetlViewModel.Where(a => a.Flag == Flag.Deleted).Select(c => new OrderDetails
                    {
                        Id          = c.Id,
                        MastId      = c.MastId,
                        ProductName = c.ProductName,
                        Qty         = c.Qty,
                        Rate        = c.Rate
                    }).ToList();
                    _context.RemoveRange(detl);
                    await _context.SaveChangesAsync();

                    _context.Update(model);
                    await _context.SaveChangesAsync();

                    result = new AppResult {
                        ResultType = ResultType.Success, Message = "Successfully Updated !!"
                    };
                    //return Json(result);
                    return(RedirectToAction("Index"));
                }
                else
                {
                    result = new AppResult {
                        ResultType = ResultType.Failed, Message = string.Join(";", ModelState.Values.SelectMany(x => x.Errors).Select(x => x.ErrorMessage))
                    };
                    return(Json(result));
                }
            }
            catch (Exception ex)
            {
                result = new AppResult {
                    ResultType = ResultType.Failed, Message = "Exception occur with the system. please contact to vendor."
                };
                return(Json(result));
            }
        }
        public async Task <IActionResult> Create(OrderMastViewModel data)
        {
            AppResult result = new AppResult();

            try
            {
                if (ModelState.IsValid)
                {
                    OrderMaster model = new OrderMaster
                    {
                        CustomerName = data.CustomerName,
                        OrderDate    = data.OrderDate,
                        OrderDetails = data.OrderDetlViewModel.Select(a => new OrderDetails
                        {
                            ProductName = a.ProductName,
                            Qty         = a.Qty,
                            Rate        = a.Rate
                        }).ToList()
                    };
                    _context.Add(model);
                    await _context.SaveChangesAsync();

                    result = new AppResult {
                        ResultType = ResultType.Success, Message = "Successfully Added!"
                    };

                    //return Json(result);
                    return(RedirectToAction("Index"));
                }
                else
                {
                    result = new AppResult {
                        ResultType = ResultType.Failed, Message = string.Join(";", ModelState.Values.SelectMany(x => x.Errors).Select(x => x.ErrorMessage))
                    };
                    return(Json(result));
                }
            }
            catch (Exception ex)
            {
                result = new AppResult {
                    ResultType = ResultType.Failed, Message = "Exception occur with the system. please contact to vendor."
                };
                return(Json(result));
            }
        }