private IEnumerable <DispatchViewModelForReconcile> BindDispatchViewModelForReconciles(IEnumerable <Dispatch> dispatches)
        {
            var dispatchViewModelForReconciles = new List <DispatchViewModelForReconcile>();

            foreach (var dispatch in dispatches)
            {
                var firstOrDefault = dispatch.DispatchDetails.FirstOrDefault();
                if (firstOrDefault != null)
                {
                    var dispatchViewModelForReconcile = new DispatchViewModelForReconcile();
                    dispatchViewModelForReconcile.DispatchID           = dispatch.DispatchID;
                    dispatchViewModelForReconcile.FDP                  = dispatch.FDP.Name;
                    dispatchViewModelForReconcile.DispatchedByStoreMan = dispatch.DispatchedByStoreMan;
                    dispatchViewModelForReconcile.DispatchDate         = dispatch.DispatchDate;
                    dispatchViewModelForReconcile.RequisitionNo        = dispatch.RequisitionNo;
                    dispatchViewModelForReconcile.GIN                  = dispatch.GIN;
                    dispatchViewModelForReconcile.BidNumber            = dispatch.BidNumber;
                    dispatchViewModelForReconcile.DriverName           = dispatch.DriverName;
                    if (dispatch.DispatchAllocation != null && dispatch.DispatchAllocation.Year != null)
                    {
                        dispatchViewModelForReconcile.MonthYear = dispatch.DispatchAllocation.Month.ToString() + " - " + dispatch.DispatchAllocation.Year.ToString();
                    }
                    dispatchViewModelForReconcile.WeighBridgeTicketNumber = dispatch.WeighBridgeTicketNumber ?? "";
                    dispatchViewModelForReconcile.CreatedDate             = dispatch.CreatedDate;
                    dispatchViewModelForReconcile.DispatchAllocationID    = dispatch.DispatchAllocationID ?? new Guid();
                    dispatchViewModelForReconcile.FDPID           = dispatch.FDPID ?? 0;
                    dispatchViewModelForReconcile.Region          = dispatch.FDP.AdminUnit.AdminUnit2.AdminUnit2.Name;
                    dispatchViewModelForReconcile.Zone            = dispatch.FDP.AdminUnit.AdminUnit2.Name;
                    dispatchViewModelForReconcile.Woreda          = dispatch.FDP.AdminUnit.Name;
                    dispatchViewModelForReconcile.HubID           = dispatch.HubID;
                    dispatchViewModelForReconcile.PlateNo_Prime   = dispatch.PlateNo_Prime;
                    dispatchViewModelForReconcile.PlateNo_Trailer = dispatch.PlateNo_Trailer ?? "";
                    dispatchViewModelForReconcile.Remark          = dispatch.Remark ?? "";
                    dispatchViewModelForReconcile.Round           = dispatch.Round;
                    dispatchViewModelForReconcile.TransporterID   = dispatch.TransporterID;
                    dispatchViewModelForReconcile.CommodityID     = firstOrDefault.CommodityID;
                    dispatchViewModelForReconcile.Commodity       = firstOrDefault.Commodity.Name;
                    dispatchViewModelForReconcile.Quantity        = firstOrDefault.RequestedQuantityInMT;
                    dispatchViewModelForReconcile.QuantityInUnit  = firstOrDefault.RequestedQunatityInUnit;
                    dispatchViewModelForReconcile.UnitID          = firstOrDefault.UnitID;

                    dispatchViewModelForReconciles.Add(dispatchViewModelForReconcile);
                }
            }
            return(dispatchViewModelForReconciles);
        }
        public ActionResult DeliveryReconcileUpdate([DataSourceRequest] DataSourceRequest request, DispatchViewModelForReconcile dispatchViewModelForReconcile)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    if (dispatchViewModelForReconcile.DeliveryReconcileID != null)
                    {
                        var deliveryReconcile =
                            _deliveryReconcileService.FindById((int)dispatchViewModelForReconcile.DeliveryReconcileID);
                        deliveryReconcile.GRN            = dispatchViewModelForReconcile.GRN;
                        deliveryReconcile.FDPID          = dispatchViewModelForReconcile.FDPID;
                        deliveryReconcile.DispatchID     = dispatchViewModelForReconcile.DispatchID;
                        deliveryReconcile.WayBillNo      = dispatchViewModelForReconcile.WayBillNo;
                        deliveryReconcile.RequsitionNo   = dispatchViewModelForReconcile.RequisitionNo;
                        deliveryReconcile.HubID          = dispatchViewModelForReconcile.HubID;
                        deliveryReconcile.GIN            = dispatchViewModelForReconcile.GIN;
                        deliveryReconcile.ReceivedAmount = (dispatchViewModelForReconcile.ReceivedAmount ?? 0);
                        deliveryReconcile.ReceivedDate   = (dispatchViewModelForReconcile.ReceivedDate ?? DateTime.Now);
                        deliveryReconcile.LossAmount     = dispatchViewModelForReconcile.LossAmount;
                        deliveryReconcile.LossReason     = dispatchViewModelForReconcile.LossReason;
                        _deliveryReconcileService.EditDeliveryReconcile(deliveryReconcile);
                        ModelState.AddModelError("Success", @"Success: Delivery Reconcilation Data Updated.");
                    }
                    else
                    {
                        var dvmfr = dispatchViewModelForReconcile;
                        if (dvmfr.GRN != null && dvmfr.RequisitionNo != null && dvmfr.GIN != null &&
                            dvmfr.ReceivedAmount != null && dvmfr.ReceivedDate != null)
                        {
                            var deliveryReconcile = new DeliveryReconcile
                            {
                                GRN            = dvmfr.GRN,
                                FDPID          = dvmfr.FDPID,
                                DispatchID     = dvmfr.DispatchID,
                                WayBillNo      = dvmfr.WayBillNo,
                                RequsitionNo   = dvmfr.RequisitionNo,
                                HubID          = dvmfr.HubID,
                                GIN            = dvmfr.GIN,
                                ReceivedAmount =
                                    (dvmfr.ReceivedAmount ?? 0),
                                ReceivedDate =
                                    (dvmfr.ReceivedDate ?? DateTime.Now),
                                LossAmount = dvmfr.LossAmount,
                                LossReason = dvmfr.LossReason
                            };
                            _deliveryReconcileService.AddDeliveryReconcile(deliveryReconcile);
                            _transactionService.PostDeliveryReconcileReceipt(deliveryReconcile.DeliveryReconcileID);
                            ModelState.AddModelError("Success", @"Success: Delivery Reconcilation Data Added.");
                        }
                    }

                    //return RedirectToAction("Index", new {regionID = });
                }
                catch (Exception ex)
                {
                    ModelState.AddModelError("Errors", @"Error: FDP not registered. All fields need to be filled.");
                }
            }
            return(Json(new[] { dispatchViewModelForReconcile }.ToDataSourceResult(request, ModelState)));
        }