public DataTable getData(DateTime date)
        {
            DistributionBL      shipmentService = new DistributionBL();
            List <Distribution> list            = shipmentService.GetAll().Where(x => x.RecordStatus == 1 && x.CreatedDate.ToShortDateString() == date.ToShortDateString() && x.Area.City.BranchCorpOffice.BranchCorpOfficeId == GlobalVars.DeviceBcoId).ToList();

            List <DailyTripViewModel> modelList = Match(list);

            DataTable dt = new DataTable();

            dt.Columns.Add(new DataColumn("No", typeof(string)));
            dt.Columns.Add(new DataColumn("AWB/SOA", typeof(string)));
            dt.Columns.Add(new DataColumn("Consignee", typeof(string)));
            dt.Columns.Add(new DataColumn("Address", typeof(string)));
            dt.Columns.Add(new DataColumn("QTY", typeof(int)));
            dt.Columns.Add(new DataColumn("AGW", typeof(string)));
            dt.Columns.Add(new DataColumn("Service Mode", typeof(string)));
            dt.Columns.Add(new DataColumn("Payment Mode", typeof(string)));
            dt.Columns.Add(new DataColumn("Amount", typeof(string)));
            dt.Columns.Add(new DataColumn("Area", typeof(string)));

            dt.Columns.Add(new DataColumn("Driver", typeof(string)));
            dt.Columns.Add(new DataColumn("Checker", typeof(string)));

            dt.Columns.Add(new DataColumn("BCO", typeof(string)));

            dt.Columns.Add(new DataColumn("PaymentCode", typeof(string)));
            dt.Columns.Add(new DataColumn("ScannedBy", typeof(string)));
            dt.Columns.Add(new DataColumn("Batch", typeof(string)));

            dt.BeginLoadData();
            int ctr = 1;

            foreach (DailyTripViewModel item in modelList)
            {
                DataRow row = dt.NewRow();
                row[0]  = (ctr++).ToString();
                row[1]  = item.AirwayBillNo;
                row[2]  = item.Consignee;
                row[3]  = item.Address;
                row[4]  = item.Qty;
                row[5]  = item.AGW;
                row[6]  = item.ServiceMode;
                row[7]  = item.PaymentMode;
                row[8]  = item.Amount;
                row[9]  = item.Area;
                row[10] = item.Driver;
                row[11] = item.Checker;
                row[12] = item.BCO;
                row[13] = item.PaymentCode;
                row[14] = item.Scannedby;
                row[15] = item.BatchName;
                dt.Rows.Add(row);
            }
            dt.EndLoadData();

            return(dt);
        }
        public List <DeliveryStatusViewModel> Match(List <Delivery> _deliveries)
        {
            BranchCorpOfficeBL bcoService             = new BranchCorpOfficeBL();
            DeliveryStatusBL   status                 = new DeliveryStatusBL();
            DeliveryRemarkBL   remark                 = new DeliveryRemarkBL();
            DistributionBL     distributionService    = new DistributionBL();
            DeliveryReceiptBL  deliveryReceiptService = new DeliveryReceiptBL();
            ShipmentBL         shipmentService        = new ShipmentBL();
            PackageNumberBL    _packageNumberService  = new PackageNumberBL();

            List <DeliveryStatusViewModel> _results = new List <DeliveryStatusViewModel>();

            List <Distribution> distributions = distributionService.GetAll().ToList();

            List <DeliveryReceipt> deliveryReceipt = deliveryReceiptService.GetAll().ToList();
            UserStore _userService = new UserStore();

            foreach (Delivery delivery in _deliveries)
            {
                DeliveryStatusViewModel model = new DeliveryStatusViewModel();

                DeliveryStatusViewModel isExist = _results.Find(x => x.AirwayBillNo == delivery.Shipment.AirwayBillNo);


                if (isExist != null)
                {
                    isExist.QTY++;
                }
                else
                {
                    model.AirwayBillNo = delivery.Shipment.AirwayBillNo;
                    model.QTY          = _packageNumberService.FilterActiveBy(x => x.Shipment.AirwayBillNo == delivery.Shipment.AirwayBillNo).Count;
                    model.Status       = delivery.DeliveryStatus.DeliveryStatusName;
                    model.Remarks      = "NA";
                    model.DeliveredBy  = delivery.DeliveredBy.FullName;
                    if (delivery.DeliveryRemarkId != null)
                    {
                        model.Remarks = delivery.DeliveryRemark.DeliveryRemarkName;
                    }
                    Distribution    dis      = distributions.Find(x => x.ShipmentId == delivery.ShipmentId);
                    DeliveryReceipt dReceipt = deliveryReceipt.Find(x => x.DeliveryId == delivery.DeliveryId);
                    //List<Distribution> list = distributions.Where( x => x.ShipmentId == delivery.ShipmentId).Distinct().ToList();
                    //foreach(Distribution dis in list)
                    //{
                    //    //model.Area = dis.Area.RevenueUnitName;
                    //    model.Driver = dis.Driver;
                    //    model.Checker = dis.Checker;
                    //    model.Batch = dis.Batch.BatchName;
                    //    model.PlateNo = dis.PlateNo;
                    //    model.BCO = dis.Area.City.BranchCorpOffice.BranchCorpOfficeName;
                    //}
                    model.Area    = dis.Area.RevenueUnitName;
                    model.Driver  = dis.Driver;
                    model.Checker = dis.Checker;
                    model.Batch   = dis.Batch.BatchName;
                    model.PlateNo = dis.PlateNo;
                    model.BCO     = dis.Area.City.BranchCorpOffice.BranchCorpOfficeName;
                    //model.ScannedBy = AppUser.User.Employee.FullName;
                    model.ScannedBy = "N/A";
                    string employee = _userService.FindById(dis.CreatedBy).Employee.FullName;
                    if (employee != "")
                    {
                        model.ScannedBy = employee;
                    }
                    model.ReceivedBy = "NA";
                    if (dReceipt != null)
                    {
                        model.ReceivedBy = dReceipt.ReceivedBy;
                    }

                    _results.Add(model);
                }
            }

            //List<BranchCorpOffice> _bco= bcoService.GetAll().Where(x => x.RecordStatus == 1 && x.BranchCorpOfficeId == GlobalVars.DeviceBcoId).ToList();
            //string bcoName = bcoService.GetAll().Where(x => x.BranchCorpOfficeId == GlobalVars.DeviceBcoId).Select(x => x.BranchCorpOfficeName).ToString();
            //string bcoName = _bco.Select(x => x.BranchCorpOfficeName).ToString();
            string bcoName = bcoService.GetAll().Find(x => x.BranchCorpOfficeId == GlobalVars.DeviceBcoId).BranchCorpOfficeName;
            List <DeliveryStatusViewModel> _resultsFilter = _results.FindAll(x => x.BCO == bcoName);

            //List<DeliveryStatusViewModel> resultList = modelList.FindAll(x => x.Area == revenueUnitName);
            //return _results;
            return(_resultsFilter);
        }