private IQueryable <SalesReturn> CreateQuery(SalesReturnFilterModel filter)
        {
            var items = from i in db.SalesReturn
                        where i.IsDeleted == false
                        select i;

            if (filter != null)
            {
                if (filter.CustomerId != 0)
                {
                    items = items.Where(a => a.CustomerId == filter.CustomerId);
                }

                if (!string.IsNullOrWhiteSpace(filter.MemoNumber))
                {
                    items = items.Where(a => a.MemoNumber.Contains(filter.MemoNumber));
                }

                if (filter.DateType != DateSearchType.All)
                {
                    DateTime dateFrom = filter.DateFrom.Date;
                    DateTime dateTo   = filter.DateTo.AddDays(1).Date;

                    items = items.Where(a => a.ReturnDate >= dateFrom && a.ReturnDate < dateTo);
                }

                if (filter.Status != ReturnStatusType.All)
                {
                    if (filter.Status == ReturnStatusType.Used)
                    {
                        items = items.Where(a => a.IsUsed != null && a.IsUsed == true);
                    }
                    else
                    {
                        items = items.Where(a => a.IsUsed == null || a.IsUsed == false);
                    }
                }
            }
            else
            {
                //Default sorting
                items = items.OrderByDescending(a => a.ReturnDate);
            }

            return(items);
        }
        private void LoadSalesReturn(SalesReturnFilterModel filter)
        {
            int  records     = 0;
            long elapsedTime = ClientHelper.PerformFetch(() =>
            {
                var results = this.salesReturnController.FetchSalesReturnWithSearch(filter);
                salesReturnDisplayModelBindingSource.DataSource = results;

                if (salesReturnDisplayModelBindingSource.Count == 0)
                {
                    salesReturnDetailModelBindingSource.DataSource = null;
                }

                records = results.Count;
            });

            ((MainForm)this.ParentForm).AttachStatus(records, elapsedTime);
        }
        void form_SalesReturnUpdated(object sender, EventArgs e)
        {
            SalesReturnFilterModel filter = ComposeSearch();

            LoadSalesReturn(filter);

            if (selectedId == 0)
            {
                salesReturnDisplayModelBindingSource.Position = salesReturnDisplayModelBindingSource.Count - 1;
            }
            else
            {
                SalesReturnDisplayModel item = ((SortableBindingList <SalesReturnDisplayModel>)salesReturnDisplayModelBindingSource.DataSource)
                                               .FirstOrDefault(a => a.Id == selectedId);
                int index = salesReturnDisplayModelBindingSource.IndexOf(item);

                salesReturnDisplayModelBindingSource.Position = index;
                dataGridView1.Rows[index].Selected            = true;
            }
        }
        public void RefreshView()
        {
            SalesReturnFilterModel filter = ComposeSearch();

            LoadSalesReturn(filter);
        }
        private void SearchButton_Click(object sender, EventArgs e)
        {
            SalesReturnFilterModel filter = ComposeSearch();

            LoadSalesReturn(filter);
        }
        public SortableBindingList <SalesReturnDisplayModel> FetchSalesReturnWithSearch(SalesReturnFilterModel filter)
        {
            try
            {
                var query = CreateQuery(filter);

                var result = from a in query
                             select new SalesReturnDisplayModel
                {
                    Id                = a.Id,
                    MemoNumber        = a.MemoNumber,
                    Customer          = a.Customer.CompanyName,
                    ReturnDate        = a.ReturnDate.Value,
                    AmountReturn      = a.AmountReturn.Value,
                    Adjustment        = a.Adjustment.Value,
                    TotalCreditAmount = a.TotalCreditAmount.Value,
                    Remarks           = a.Remarks,
                    RecordedBy        = a.RecordedByUser.Firstname + " " + a.RecordedByUser.Lastname,
                    AmountUsed        = a.AmountUsed.HasValue ? a.AmountUsed.Value : 0,
                    //ApprovedBy = a.ApprovedBy.HasValue ? a.ApprovedByUser.Firstname + " " + a.ApprovedByUser.Lastname : "-",
                    IsDeleted = a.IsDeleted.Value,
                };

                SortableBindingList <SalesReturnDisplayModel> b = new SortableBindingList <SalesReturnDisplayModel>(result);

                return(b);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }