public ActionResult DetailsVehicle(string id, VehicleOverallSearchView filter)
        {
            var model = GetVehicleData(filter).Where(x => (x.ChasisNumber == null ? "" : x.ChasisNumber.ToUpper()) == (id == null ? "" : id.ToUpper())).FirstOrDefault();

            model.MainMenu     = _mainMenu;
            model.CurrentLogin = CurrentUser;

            model.MonthlyInstallmentStr = model.MonthlyInstallment == null ? "" : string.Format("{0:n0}", model.MonthlyInstallment);
            model.VatStr = model.Vat == null ? "" : string.Format("{0:n0}", model.Vat);
            model.TotalMonthlyInstallmentStr = model.TotalMonthlyInstallment == null ? "" : string.Format("{0:n0}", model.TotalMonthlyInstallment);


            var History = _fleetBLL.GetFleet().Where(x => (x.ChasisNumber == null ? "" : x.ChasisNumber.ToUpper()) == (model.ChasisNumber == null ? "" : model.ChasisNumber.ToUpper()) &&
                                                     (x.PoliceNumber == null ? "" : x.PoliceNumber.ToUpper()) == (model.PoliceNumber == null ? "" : model.PoliceNumber.ToUpper()) &&
                                                     x.StartContract == model.StartContract && x.EndContract == model.EndContract).GroupBy(x => x.CreatedDate)
                          .Select(x => new VehicleHistory {
                Employee = x.First().EmployeeName,
                Date     = x.First().CreatedDate
                           //Description = x.First().VehicleStatus
            }).OrderBy(x => x.Date).ToList();

            model.DetailsHistory = new List <VehicleHistory>();
            if (History != null && History.Count > 0)
            {
                model.DetailsHistory = History;
            }

            return(View(model));
        }
        private string CreateXlsDetailsVehicle(VehicleOverallItem model)
        {
            //get data
            var filter = new VehicleOverallSearchView();
            var data   = GetVehicleData(filter).Where(x => (x.ChasisNumber == null ? "" : x.ChasisNumber.ToUpper()) == (model.ChasisNumber == null ? "" : model.ChasisNumber.ToUpper())).FirstOrDefault();

            data.MainMenu     = _mainMenu;
            data.CurrentLogin = CurrentUser;

            var History = _fleetBLL.GetFleet().Where(x => (x.ChasisNumber == null ? "" : x.ChasisNumber.ToUpper()) == (data.ChasisNumber == null ? "" : data.ChasisNumber.ToUpper()) &&
                                                     (x.PoliceNumber == null ? "" : x.PoliceNumber.ToUpper()) == (data.PoliceNumber == null ? "" : data.PoliceNumber.ToUpper()) &&
                                                     x.StartContract == data.StartContract && x.EndContract == data.EndContract).GroupBy(x => x.CreatedDate)
                          .Select(x => new VehicleHistory
            {
                Employee = x.First().EmployeeName,
                Date     = x.First().CreatedDate
                           //Description = x.First().VehicleStatus
            }).OrderBy(x => x.Date).ToList();

            data.DetailsHistory = new List <VehicleHistory>();
            if (History != null && History.Count > 0)
            {
                data.DetailsHistory = History;
            }

            var slDocument = new SLDocument();

            //title
            slDocument.SetCellValue(1, 1, "DETAILS VEHICLE REPORT");
            slDocument.MergeWorksheetCells(1, 1, 1, 5);
            //create style
            SLStyle valueStyle = slDocument.CreateStyle();

            valueStyle.SetHorizontalAlignment(HorizontalAlignmentValues.Center);
            valueStyle.Font.Bold     = true;
            valueStyle.Font.FontSize = 18;
            slDocument.SetCellStyle(1, 1, valueStyle);

            //create header
            slDocument = CreateHeaderDetailsVehicle(slDocument);

            //create data
            slDocument = CreateDataExcelDetailsVehicle(slDocument, data);

            var fileName = "Vehicle_report" + DateTime.Now.ToString("_yyyyMMddHHmmss") + ".xlsx";
            var path     = Path.Combine(Server.MapPath(Constans.UploadPath), fileName);

            slDocument.SaveAs(path);

            return(path);
        }
        private List <VehicleOverallItem> GetVehicleData(VehicleOverallSearchView filter = null)
        {
            if (filter == null)
            {
                //Get All
                var data = _vehicleOverallReportBLL.GetVehicle(new VehicleOverallReportGetByParamInput());
                return(Mapper.Map <List <VehicleOverallItem> >(data));
            }

            //getbyparams
            var input = Mapper.Map <VehicleOverallReportGetByParamInput>(filter);

            var dbData = _vehicleOverallReportBLL.GetVehicle(input);

            return(Mapper.Map <List <VehicleOverallItem> >(dbData));
        }