Esempio n. 1
0
        public OrderReportViewModel Get(int orderId)
        {
            var order     = _orderRepository.Get(orderId);
            var viewModel = new OrderReportViewModel
            {
                OrderId              = orderId,
                CustomerId           = order.CustomerId,
                CustomerName         = order.Customer.Name,
                StatusName           = order.Status.Name,
                RequestedProcessDate = order.RequestedProcessDate,
                ExpectedHeadNumber   = order.ExpectedHeadNumber
            };

            return(viewModel);
        }
        public virtual ActionResult GetAll(GridRequest request,
                                           long?dropShipperId,
                                           string orderString,
                                           string orderStatus,
                                           int?market,
                                           DateTime?fromDate,
                                           DateTime?toDate)
        {
            LogI("GetAll, fromDate=" + fromDate
                 + ", toDate=" + toDate
                 + ", orderString=" + orderString
                 + ", dropShipperId=" + dropShipperId
                 + ", orderStatus=" + orderStatus
                 + ", market=" + market);

            var pageSize = request.ItemsPerPage;

            var searchFilter = new OrderReportSearchFilterViewModel()
            {
                FromDate      = fromDate,
                ToDate        = toDate,
                DropShipperId = dropShipperId,
                Market        = market,
                OrderString   = orderString,
                OrderStatus   = orderStatus,
                StartIndex    = (request.Page - 1) * pageSize,
                LimitCount    = pageSize,
                SortField     = request.SortField,
                SortMode      = request.SortMode == "asc" ? 0 : 1,
            };

            var gridResult = OrderReportViewModel.GetAll(Db, searchFilter);

            //var data = new GridResponse<StyleViewModel>(items, items.Count, Time.GetAppNowTime());

            return(Json(gridResult, JsonRequestBehavior.AllowGet));
        }
        public virtual ActionResult ExportToExcel(long?dropShipperId,
                                                  string orderString,
                                                  string orderStatus,
                                                  int?market,
                                                  DateTime?fromDate,
                                                  DateTime?toDate)
        {
            LogI("ExportToExcel, fromDate=" + fromDate
                 + ", toDate=" + toDate
                 + ", orderString=" + orderString
                 + ", dropShipperId=" + dropShipperId
                 + ", orderStatus=" + orderStatus
                 + ", market=" + market);

            var searchFilter = new OrderReportSearchFilterViewModel()
            {
                FromDate      = fromDate,
                ToDate        = toDate,
                DropShipperId = dropShipperId,
                Market        = market,
                OrderString   = orderString,
                OrderStatus   = orderStatus,
                StartIndex    = 0,
                LimitCount    = 100000,
            };

            string filename = "OrderReport_" + Time.GetAppNowTime().ToString("ddMMyyyyHHmmss") + ".xls";
            var    output   = OrderReportViewModel.ExportToExcel(LogService,
                                                                 Time,
                                                                 Db,
                                                                 searchFilter);

            return(File(output.ToArray(),           //The binary data of the XLS file
                        "application/vnd.ms-excel", //MIME type of Excel files
                        filename));                 //Suggested file name in the "Save as" dialog which will be displayed to the end user
        }
Esempio n. 4
0
        public PartialViewResult GenerateReport(OrderReportViewModel viewModel)
        {
            string reportType = ReportService.GetReportType(viewModel.ReportType);

            if (reportType == null)
            {
                ModelState.AddModelError("ReportType", "Report Type is invalid");
            }

            if (!viewModel.ReportIds.Any())
            {
                ModelState.AddModelError("ReportIds", "Report type is required");
            }

            Dictionary <string, string> files = null;

            if (ModelState.IsValid)
            {
                var  orderId       = viewModel.OrderId;
                var  reportsFolder = string.Format("~/Documents/Reports/{0}/", orderId);
                var  order         = _orderRepository.Get(orderId);
                bool isCustom      = order.Customer.CustomerTypeId == OmsCustomerType.Custom;

                List <CustomerLocation>      locations          = null;
                List <AnimalOrderDetail>     animalOrderDetails = null;
                List <ColdWeightEntryDetail> coldWeightDetails  = null;

                if (isCustom)
                {
                    var coldWeightEntry = _coldWeightEntryRepository.GetByOrderId(orderId);
                    if (coldWeightEntry == null)
                    {
                        ModelState.AddModelError("ColdWeight", "No AnimalNumbers");

                        OrderReportViewModel reportViewModel = _orderReportService.Get(viewModel.OrderId);
                        return(PartialView("_Report", reportViewModel));
                    }
                    coldWeightDetails = coldWeightEntry.ColdWeightEntryDetails.ToList();

                    // All records from dbo.AnimalOrderDetail by Order
                    animalOrderDetails = coldWeightDetails.SelectMany(cw => cw.AnimalOrderDetails).ToList();
                }

                foreach (var report in viewModel.ReportIds)
                {
                    var reportName = ReportService.GetReportName(report);

                    DeleteOldReports(reportsFolder, reportName + "*." + reportType);

                    if (isCustom)
                    {
                        foreach (var detail in coldWeightDetails)
                        {
                            var sides = _coldWeightEntryDetailRepository.GetSideWeigths(detail.Id);
                            foreach (var side in sides)
                            {
                                if (!side.Value.HasValue)
                                {
                                    continue;
                                }

                                var orderDetailsForSides = animalOrderDetails.Where(a => a.ColdWeightDetailId == detail.Id)
                                                           .Select(a => a.OrderDetail).ToList()
                                                           .FindAll(x => x.SideTypeId == side.Key);

                                var path = string.Format("{0}{1}BackTag{2}{3}{4}.{5}", reportsFolder, reportName,
                                                         detail.AnimalNumber, side.Key, side.Value, reportType);

                                var filename = GetFilenameSafe(path);

                                switch (reportName)
                                {
                                case OrderReportViewModel.ReportTypes.ProductionManifest:
                                    ReportService.GenerateProductionManifest(order, orderDetailsForSides, filename,
                                                                             reportType, (UnitsType)viewModel.UnitsType, viewModel.SuppressWeights);
                                    break;

                                case OrderReportViewModel.ReportTypes.ShippingManifest:
                                    var location = _customerLocationRepository.Get(side.Value.Value);

                                    ReportService.GenerateShippingManifest(order, orderDetailsForSides, filename,
                                                                           location, reportType, (UnitsType)viewModel.UnitsType, viewModel.SuppressWeights);
                                    break;

                                case OrderReportViewModel.ReportTypes.ProductionDetail:
                                {
                                    var currentLocation = _customerLocationRepository.Get(side.Value.Value);
                                    var labels          = GetLabelsByOrderDetailsId(orderDetailsForSides);

                                    ReportService.GenerateProductionManifestDetail(order, labels, filename,
                                                                                   currentLocation, reportType, (UnitsType)viewModel.UnitsType, viewModel.SuppressWeights);
                                    break;
                                }

                                case OrderReportViewModel.ReportTypes.YieldReport:
                                {
                                    var coldWeightsDeatails = _coldWeightEntryService.GetItems(orderId).ToList();
                                    var labels = GetLabelsByOrderDetailsId(orderDetailsForSides);

                                    ReportService.GenerateYield(order, labels, filename, reportType, coldWeightsDeatails, (UnitsType)viewModel.UnitsType);
                                    break;
                                }
                                }
                            }
                        }
                    }
                    else
                    {
                        if (reportName == OrderReportViewModel.ReportTypes.ProductionManifest)
                        {
                            var path     = string.Format("{0}{1}.{2}", reportsFolder, reportName, reportType);
                            var filename = GetFilenameSafe(path);

                            var orderDetails = _orderDetailRepository.FindAll(x => x.OrderId == order.Id).ToList();

                            ReportService.GenerateProductionManifest(order, orderDetails, filename, reportType, (UnitsType)viewModel.UnitsType, viewModel.SuppressWeights);
                        }

                        if (reportName == OrderReportViewModel.ReportTypes.ShippingManifest)
                        {
                            locations = GetLocations(order).ToList();

                            foreach (var currentLocation in locations)
                            {
                                var location = currentLocation;
                                var path     = string.Format("{0}{1}_{2}.{3}", reportsFolder, reportName, location.Id, reportType);
                                var filename = GetFilenameSafe(path);

                                var orderDetails = _orderDetailRepository
                                                   .FindAll(x => x.OrderId == orderId && x.CustomerLocationId == location.Id)
                                                   .ToArray();

                                ReportService.GenerateShippingManifest(order, orderDetails, filename, location,
                                                                       reportType, (UnitsType)viewModel.UnitsType, viewModel.SuppressWeights);
                            }
                        }

                        if (reportName == OrderReportViewModel.ReportTypes.ProductionDetail)
                        {
                            locations = locations ?? GetLocations(order).ToList();

                            foreach (var currentLocation in locations)
                            {
                                var location = currentLocation;

                                var path = string.Format("{0}{1}{2}.{3}", reportsFolder, reportName,
                                                         location.Id,
                                                         reportType);
                                var filename = GetFilenameSafe(path);

                                var orderDetailsForSides = _orderDetailRepository
                                                           .FindAll(x => x.OrderId == orderId && x.CustomerLocationId == location.Id).ToList();

                                var labels = GetLabelsByOrderDetailsId(orderDetailsForSides);

                                ReportService.GenerateProductionManifestDetail(order, labels, filename, currentLocation,
                                                                               reportType, (UnitsType)viewModel.UnitsType, viewModel.SuppressWeights);
                            }
                        }
                        if (reportName == OrderReportViewModel.ReportTypes.YieldReport)
                        {
                            var path                = string.Format("{0}{1}.{2}", reportsFolder, reportName, reportType);
                            var filename            = GetFilenameSafe(path);
                            var coldWeightsDeatails = _coldWeightEntryService.GetItems(order.Id).ToList();
                            var orderDetails        = _orderDetailRepository.FindAll(x => x.OrderId == order.Id).ToList();
                            var labels              = GetLabelsByOrderDetailsId(orderDetails);

                            ReportService.GenerateYield(order, labels, filename, reportType, coldWeightsDeatails);
                        }
                    }
                }

                files = Directory.GetFiles(GetFilenameSafe(reportsFolder), "*." + reportType,
                                           SearchOption.TopDirectoryOnly)
                        .Select(Path.GetFileName)
                        .ToDictionary(x => x, x => string.Format("{0}{1}", reportsFolder, x));
            }

            FillLookups();
            OrderReportViewModel model = _orderReportService.Get(viewModel.OrderId);

            model.ReportIds   = viewModel.ReportIds;
            model.ReportFiles = files;
            return(PartialView("_Report", model));
        }