protected override void Load(bool isFirstLoad = false)
        {
            LoadMemberFarmers();
            AddFarmerEnabler();

            Application.Current.Dispatcher.BeginInvoke(
                new Action(
                    delegate
                    {
                        if (isFirstLoad)
                            Setup();
                        using (var c = NestedContainer)
                        {
                            var query = new QueryCommodityOwner();
                            query.SupplierId = SupplierId;
                            query.Take = ItemsPerPage;
                            query.Skip = ItemsPerPage * (CurrentPage - 1);
                            query.ShowInactive = ShowInactive;
                            if (!string.IsNullOrWhiteSpace(SearchText))
                                query.Name = SearchText;

                            var rawList = Using<ICommodityOwnerRepository>(c).Query(query);
                            _pagedCommodityOwners = new PagenatedList<CommodityOwner>(rawList.Data.OfType<CommodityOwner>().AsQueryable(),
                                                                                      CurrentPage,
                                                                                      ItemsPerPage,
                                                                                      rawList.Count, true);

                            ListOfCommodityOwners.Clear();
                            int rownumber = 0;
                            _pagedCommodityOwners.ToList().ForEach(n =>
                                                                   ListOfCommodityOwners.Add(new VmCommodityOwner
                                                                   {
                                                                       Id = n.Id,
                                                                       Code = n.Code,
                                                                       Surname = n.Surname,
                                                                       FirstName = n.FirstName,
                                                                       LastName = n.LastName,
                                                                       IdNo = n.IdNo,
                                                                       Email = n.Email,
                                                                       PhoneNumber = n.PhoneNumber,
                                                                       BusinessNumber = n.BusinessNumber,
                                                                       CommodityOwnerType = n.CommodityOwnerType,
                                                                       Status = n._Status,
                                                                       Action=n._Status==EntityStatus.Active?"Deactivate":"Activate",
                                                                       RowNumber = ++rownumber
                                                                   }));
                            UpdatePagenationControl();
                        }
                    }));
        }
        public QueryResult<CommodityOwnerViewModel> Query(QueryCommodityOwner q)
        {
            var queryResult = _commodityOwnerRepository.Query(q);

            var results = new QueryResult<CommodityOwnerViewModel>();

            results.Data = queryResult.Data.Select(Map).ToList();
            results.Count = queryResult.Count;

            return results;
        }
 public CommodityOwnerViewModel GetByQuery(QueryCommodityOwner query)
 {
     var commodityOwner = _commodityOwnerRepository.Query(query).Data.OfType<CommodityOwner>().FirstOrDefault();
     if (commodityOwner == null) return null;
     return Map(commodityOwner);
 }
        public ActionResult ListFarmers(Guid? CommoditySupplierId, Boolean? showInactive, int page=1, int itemsperpage=10, string srchParam="")
        {
            //receive temp data
            if (CommoditySupplierId != null)
            {
                ViewBag.CommoditySupplierId = CommoditySupplierId;
                var commoditysupplier = _commoditySupplierRepository.GetById(CommoditySupplierId.Value) as CommoditySupplier;
                if(commoditysupplier != null && commoditysupplier.CommoditySupplierType==CommoditySupplierType.Individual)
                {
                    ViewBag.IsFarmerEnabled = false;
                }
                else
                {
                    ViewBag.IsFarmerEnabled = true;
                }

                commoditySupplier = CommoditySupplierId.Value;
            }
            try
            {
                if (itemsperpage != null)
                {
                    ViewModelBase.ItemsPerPage = itemsperpage;
                }
                bool showinactive = false;
                if (showInactive != null)
                {
                    showinactive = (bool) showInactive;
                }

                ViewBag.showInactive = showinactive;
                if (TempData["msg"] != null)
                {
                    ViewBag.msg = TempData["msg"].ToString();
                    TempData["msg"] = null;
                }
                ViewBag.CommoditySupplierId = commoditySupplier;

                var currentPageIndex = page - 1 < 0 ? 0 : page - 1;
                var take = itemsperpage;
                var skip = currentPageIndex * take;

                var query = new QueryCommodityOwner();
                query.ShowInactive = showinactive;
                query.SupplierId = commoditySupplier;
                query.Name = srchParam;
                query.Take = take;
                query.Skip = skip;

                var ls = _commodityOwnerViewModelBuilder.Query(query);
                var data = ls.Data;
                var count = ls.Count;
                
                var supplier = _commoditySupplierRepository.GetById(commoditySupplier) as CommoditySupplier;
                if (supplier != null) ViewBag.CommoditySupplierType = supplier.CommoditySupplierType;

                return View(data.ToPagedList(currentPageIndex, ViewModelBase.ItemsPerPage, count));
            }
            catch (Exception ex)
            {
                _log.Debug("Failed to list hubs " + ex.Message);
                _log.Error("Failed to list hubs" + ex.ToString());
                return View();
            }
        }
        public ActionResult EditFarmer(Guid CommoditySupplierId, Guid id)
        {
            ViewBag.GenderList = _commodityOwnerViewModelBuilder.Gender();
            ViewBag.MaritalStatusList = _commodityOwnerViewModelBuilder.MaritalStatus();
            ViewBag.CommodityOwnerTypeList = _commodityOwnerViewModelBuilder.CommodityOwnerType();
            ViewBag.CommoditySupplierList = _commodityOwnerViewModelBuilder.CommoditySupplier();
            ViewBag.CommoditySupplierId = CommoditySupplierId;
            ViewBag.CommodityOwnerId = id;
            try
            {
                var query = new QueryCommodityOwner();
                query.CommodityOwnerId = id;
                query.SupplierId = CommoditySupplierId;

                CommodityOwnerViewModel commodityOwnerViewModel = _commodityOwnerViewModelBuilder.GetByQuery(query);
                return View(commodityOwnerViewModel);
            }
            catch (Exception ex)
            {
                ViewBag.msg = ex.Message;
                return View();
            }
        }