Exemplo n.º 1
0
        public ActionResult Generate()
        {
            var consignments = Db.Assignments
                               .Include(x => x.Drivers)
                               .Include(x => x.Vehicle)
                               .ToList();//.Where(x => x.CreatedBy == LoggedInUser.Id)

            List <OrderVm> orderVMs = new List <OrderVm>();

            foreach (var consignment in consignments)
            {
                var order = Db.Orders
                            .Include(x => x.PickupAddress)
                            .Include(x => x.DeliveryAddress)
                            .FirstOrDefault(x => x.Id == consignment.OrderId);

                string prefix  = "ENCORE";
                var    barcode = GeneratorHelper.GenerateBarcode(prefix, int.Parse(order.OrderNumber));
                consignment.PickupTicket = barcode;
                consignment.PickupTicketGenerationTime = DateTime.Now;
                Db.SaveChanges();

                var pickupAddress   = TinyMapper.Map <AddressVm>(order.PickupAddress).ToString;
                var deliveryAddress = TinyMapper.Map <AddressVm>(order.DeliveryAddress).ToString;

                var orderVM = new OrderVm()
                {
                    Id                    = order.Id.ToString(),
                    OrderDate             = order.CreatedAt.ToString(),
                    OrderNumber           = order.OrderNumber,
                    PickupAddressString   = pickupAddress,
                    DeliveryAddressString = deliveryAddress,
                    PickupDate            = order.PickupDate?.ToString(),
                    DeliveryDate          = order.DeliveryDate?.ToString(),
                    Customer              = order.Client != null ? order.Client.AccountCode + " " + order.Client.Name : "",
                    PickupTicket          = consignment.PickupTicket
                };

                orderVMs.Add(orderVM);
            }
            // Generate
            var filePath = QRCodeGenerator.Generate(ImagesPath, UploadsPath, orderVMs);

            return(File(filePath, "application/octet-stream", "PickupTickets.pdf"));
        }