// GET: InputDetails
        public ActionResult Index(Guid id, string error)
        {
            InputDetailViewModel viewModel = new InputDetailViewModel();

            viewModel.Input        = UnitOfWork.InputRepository.GetById(id);
            viewModel.InputDetails = UnitOfWork.InputDetailsRepository.Get().Where(current => current.InputId == id).OrderByDescending(current => current.CreationDate).ToList();
            //viewModel.Detail = new InputDetail() { InputId = id };
            viewModel.EditMode = false;
            ViewBag.ProductId  = new SelectList(UnitOfWork.ProductRepository.Get(), "Id", "Title");
            TempData["Error"]  = "";
            if (!string.IsNullOrEmpty(error))
            {
                if (error == "error")
                {
                    TempData["Error"] = @"<p class='alert alert-danger'>خطایی رخ داد! مجددا تلاش نمایید</p> ";
                }
                else
                {
                    TempData["Error"] = @"<p class='alert alert-danger'>" + error + "</p> ";
                }
            }

            ViewBag.OrderId = new SelectList(UnitOfWork.OrderRepository.Get(c => c.CustomerId == viewModel.Input.CustomerId && c.IsActive), "Id", "Code");

            return(View(viewModel));
        }
        public ActionResult Create(InputDetailViewModel ViewModel)
        {
            try
            {
                if (!ViewModel.EditMode)
                {
                    decimal            weight       = 0;
                    Input              input        = UnitOfWork.InputRepository.GetById(ViewModel.Input.Id);
                    List <InputDetail> inputDetails = UnitOfWork.InputDetailsRepository.Get(current => current.InputId == input.Id).ToList();
                    foreach (InputDetail inputDetail in inputDetails)
                    {
                        weight += inputDetail.DestinationWeight;
                    }
                    weight += ViewModel.Detail.DestinationWeight;

                    if (input.DestinationWeight < weight)
                    {
                        //TempData["Error"] = "<p class='alert alert-danger'>مجموع وزن وارد شده از وزن مقصد بیشتر است</p>";
                        return(RedirectToAction("Index", new { id = ViewModel.Input.Id, error = "مجموع وزن وارد شده از وزن مقصد بیشتر است" }));
                    }
                    else
                    {
                        ViewModel.Detail.IsDeleted               = false;
                        ViewModel.Detail.CreationDate            = DateTime.Now;
                        ViewModel.Detail.Id                      = Guid.NewGuid();
                        ViewModel.Detail.ProductId               = ViewModel.ProductId;
                        ViewModel.Detail.OrderId                 = SetOrder(ViewModel.OrderId, ViewModel.Input.CustomerId, ViewModel.ProductId);
                        ViewModel.Detail.InputId                 = ViewModel.Input.Id;
                        ViewModel.Detail.RemainDestinationWeight = ViewModel.Detail.DestinationWeight;
                        ViewModel.Detail.RemainQuantity          = ViewModel.Detail.Quantity;
                        ViewModel.Detail.InputDetailStatusId     = UnitOfWork.InputDetailStatusRepository.Get(c => c.Code == 1)
                                                                   .FirstOrDefault()?.Id;

                        UnitOfWork.InputDetailsRepository.Insert(ViewModel.Detail);
                    }
                }
                else
                {
                    InputDetail inputDetail = UnitOfWork.InputDetailsRepository.GetById(ViewModel.Detail.Id);

                    inputDetail.IsDeleted               = false;
                    inputDetail.ProductId               = ViewModel.ProductId;
                    ViewModel.Detail.OrderId            = SetOrder(ViewModel.OrderId, ViewModel.Input.CustomerId, ViewModel.ProductId);
                    inputDetail.Quantity                = ViewModel.Detail.Quantity;
                    inputDetail.SourceWeight            = ViewModel.Detail.SourceWeight;
                    inputDetail.DestinationWeight       = ViewModel.Detail.DestinationWeight;
                    inputDetail.RemainDestinationWeight = ViewModel.Detail.DestinationWeight;
                    inputDetail.RemainQuantity          = ViewModel.Detail.Quantity;


                    UnitOfWork.InputDetailsRepository.Update(inputDetail);
                }
                UnitOfWork.Save();
                ViewBag.OrderId = new SelectList(UnitOfWork.OrderRepository.Get(c => c.CustomerId == ViewModel.Input.CustomerId && c.IsActive), "Id", "Code");

                return(RedirectToAction("Index", new { id = ViewModel.Input.Id }));
            }
            catch (Exception)
            {
                return(RedirectToAction("Index", new { id = ViewModel.Input.Id, error = "error" }));
            }
        }