[Fact] // 2. string GetPublicId(int id)
        public async void GetPublicId_shouldReturnImagePublicId()
        {
            // Arrange
            var imageUrl      = Guid.NewGuid().ToString();
            var imagePublicId = Guid.NewGuid().ToString();
            var image         = new CloudImage
            {
                PictureUrl      = imageUrl,
                PicturePublicId = imagePublicId,
            };

            await this.Context.CloudImages.AddAsync(image);

            await this.Context.SaveChangesAsync();

            var service = new ImageDbService(this.Context);

            // Act
            var result   = service.GetPublicId(image.Id);
            var expected = await this.Context.CloudImages
                           .Where(i => i.PicturePublicId == imagePublicId)
                           .Select(i => i.Id)
                           .FirstOrDefaultAsync();

            // Assert
            result.Should().Equals(expected);
        }
        private void LoadEcr3Tickets(List <OrderLine> orderLines)
        {
            //get all Ecr barcodes
            var barcodes = ImageDbService.GetOrderEcrBarcodes(_order.OrderNumber);

            //make sure we have some barcodes
            if (barcodes == null || barcodes.Count < 1)
            {
                Log("Barcodes failed to retrieve for ordernumber: " + _order.OrderNumber);
                return;
            }

            //group orderlines by barcode images
            foreach (var barcode in barcodes.ToList())
            {
                //get corresponding orderlines  *** when u save ticket id in barcodes, get our ticketid from ecr productuid
                var tempOrderLines = orderLines.Where(x => x.TicketId != null && x.TicketId.Value.ToString().Equals(barcode.TicketId, StringComparison.CurrentCultureIgnoreCase));

                if (!tempOrderLines.Any())
                {
                    continue;
                }

                var ticket = TicketService.GetTicketById(barcode.TicketId);

                var topOrderLine = tempOrderLines.FirstOrDefault();

                if (topOrderLine == null)
                {
                    continue;
                }

                var microsite = SiteService.GetMicroSiteById(topOrderLine.MicrositeId);

                var imageData = ImageDbService.GetImageMetaData(barcode.ImageId);

                LoadEcr3Ticket(tempOrderLines.ToList(), ticket, microsite, imageData);

                //var attractionMetaData = ticket.ImageMetaDataId != null
                //    ? ImageDbService.GetMetaData(ticket.ImageMetaDataId.Value.ToString())
                //    : null;

                //    MainList.Add(
                //            new VoucherTicket
                //            {
                //                UseQrCode = true,
                //                OrderLines = tempOrderLines.ToList(),
                //                Ticket = ticket,
                //                AttractionImageData = attractionMetaData,
                //                ImageData = ImageDbService.GetImageMetaData(barcode.ImageId),
                //                ValidTicketName = validTicketName
                //            }
                //        );
            }

            //PopulateVoucherTickets();
        }
Beispiel #3
0
        private void LoadAttractionsForEcr1(List <OrderLine> attractionOrderLines)
        {
            // group these orderlines by ticketid
            var ticketGroups =
                from detail in attractionOrderLines
                group detail by detail.TicketId into ticketGroup
                orderby ticketGroup.Key
                select ticketGroup;

            //loog through all ticket groups and make vouchers
            foreach (var ticketgroup in ticketGroups)
            {
                var ticketId         = ticketgroup.Key.Value.ToString();
                var ticketOrderlines = attractionOrderLines.Where(x =>
                                                                  x.TicketId.Value.ToString().Equals(ticketId, StringComparison.CurrentCultureIgnoreCase)
                                                                  );

                //since they all have the same ticket lest get the first one to work with
                var topOrderLine = ticketOrderlines.FirstOrDefault();
                //get corresponding site data
                var orderLineData = _orderlineData.FirstOrDefault(x =>
                                                                  x.OrderLineId.Equals(topOrderLine.Id.ToString(),
                                                                                       StringComparison.CurrentCultureIgnoreCase));
                //only generate qr code if site supports qr code
                if (orderLineData.UseQrCode)
                {
                    //make the qr image
                    var filePath = MakeAttractionQrCode(_order, ticketOrderlines.ToList(), ticketId);
                    //*** use file path and create the Voucher.
                    var ticket = TicketService.GetTicketById(ticketId);

                    var validTicketName = ticket.Name.ToLower().Contains(orderLineData.MicrositeName)
                   ? ticket.Name
                   : string.Concat(orderLineData.MicrositeName, " ", ticket.Name);

                    var attractionMetaData = ticket.ImageMetaDataId != null
                        ? ImageDbService.GetMetaData(ticket.ImageMetaDataId.Value.ToString())
                        : null;

                    MainList.Add(
                        new VoucherTicket
                    {
                        UseQrCode           = true,
                        OrderLines          = ticketOrderlines.ToList(),
                        Ticket              = ticket,
                        AttractionImageData = attractionMetaData,
                        ValidTicketName     = validTicketName,
                        QrCodeImageUrl      = filePath
                    }
                        );
                }
            }
        }
        [Fact] // 1. async Task<int> WriteToDatabasebAsync(string imageUrl, string imagePublicId)
        public async void WriteToDatabasebAsync_ShouldReturn_ImageId()
        {
            // Arrange
            var imageUrl      = Guid.NewGuid().ToString();
            var imagePublicId = Guid.NewGuid().ToString();

            var service = new ImageDbService(this.Context);

            // Act
            var result = await service.WriteToDatabasebAsync(imageUrl, imagePublicId);

            var expected = await this.Context.CloudImages
                           .Where(i => i.PicturePublicId == imagePublicId)
                           .Select(i => i.Id)
                           .FirstOrDefaultAsync();

            // Assert
            result.Should().Equals(expected);
        }
        public void SaveBarcodes(BookingResponse response, Order order)
        {
            try
            {
                var barcodes = response.Barcodes;

                foreach (var barcode in barcodes)
                {
                    var chartUrl = string.Format(GoogleChartUrl, barcode.BarcodeAsText);

                    var imageBytes = ImageService.DownloadImageFromUrl(chartUrl);

                    var ticket =
                        TicketService.GetTicketByProductDimensionUid(barcode.BarcodeDetails[0].ProductDimensionUID);

                    var imageSaveStatus = ImageDbService.GenerateQrImage(order.OrderNumber, ticket.Id.ToString(),
                                                                         imageBytes, MicrositeId);
                }

                //***also check for ecr1 if there is order ascurl and save old qrcode
                if (!string.IsNullOrEmpty(order.CentinelAcsurl))
                {
                    var chartUrl = string.Format(GoogleChartUrl, order.CentinelAcsurl);

                    var imageBytes = ImageService.DownloadImageFromUrl(chartUrl);

                    var imageSaveStatus = ImageDbService.GenerateQrImage(order.OrderNumber, imageBytes, MicrositeId);

                    if (imageSaveStatus != QrImageSaveStatus.Success && imageSaveStatus != QrImageSaveStatus.ImageDataExist)
                    {
                        Log("Image create failed for order " + order.OrderNumber);
                    }
                }
            }
            catch (Exception ex)
            {
                Log("SaveBarcodes() Failed Ordernumber: " + order.OrderNumber + System.Environment.NewLine + ex.Message);
            }
        }
        public VoucherTicket LoadVoucherTicketWithQrcode(Order order, List <OrderLine> orderLines, Ticket ticket, MicroSite microsite)
        {
            var validTicketName = ticket.Name.ToLower().Contains(microsite.Name.ToLower())
               ? ticket.Name
               : string.Concat(microsite.Name, " ", ticket.Name);

            var attractionMetaData = ticket.ImageMetaDataId != null
                ? ImageDbService.GetMetaData(ticket.ImageMetaDataId.Value.ToString())
                : null;

            var qrCodeImageData = GetOrderImageMetaData(order);

            return
                (new VoucherTicket
            {
                UseQrCode = true,
                OrderLines = orderLines,
                Ticket = ticket,
                AttractionImageData = attractionMetaData,
                ImageData = qrCodeImageData,
                ValidTicketName = validTicketName
            });
        }
Beispiel #7
0
        public virtual void ProcessRequest(HttpContext context)
        {
            #region path structure

            var width          = 0;
            var height         = 0;
            var square         = 0;
            var keepRatio      = false;
            var imageid        = context.Request.QueryString["imageid"];
            var imageExtension = context.Request.QueryString["extension"];
            var microsite      = context.Request.QueryString["micrositeid"];
            var rootFolder     = ConfigurationManager.AppSettings["BarCodeDir"];

            try
            {
                if (!string.IsNullOrWhiteSpace(context.Request.QueryString["w"]))
                {
                    width = Convert.ToInt32(context.Request.QueryString["w"]);
                }

                if (!string.IsNullOrWhiteSpace(context.Request.QueryString["h"]))
                {
                    height = Convert.ToInt32(context.Request.QueryString["h"]);
                }

                if (!string.IsNullOrWhiteSpace(context.Request.QueryString["r"]))
                {
                    keepRatio = true;
                }

                if (!string.IsNullOrWhiteSpace(context.Request.QueryString["s"]))
                {
                    square = Convert.ToInt32(context.Request.QueryString["s"]);
                }

                if (width > 2000)
                {
                    width = 0;
                }
                if (height > 2000)
                {
                    height = 0;
                }
                if (square > 2000)
                {
                    square = 0;
                }
            }
            catch
            {
                //ignore
            }

            var findPath = string.Format("~{0}{1}/{2}", rootFolder, microsite, imageid + "." + imageExtension);

            var fi = new FileInfo(context.Server.MapPath(findPath));

            #endregion

            #region response type (hidden cause its rubbish and i want to redo later)

            if (imageExtension.Equals("jpg", StringComparison.CurrentCultureIgnoreCase))
            {
                context.Response.ContentType = "image/jpeg";
            }
            else if (imageExtension.Equals("png", StringComparison.CurrentCultureIgnoreCase))
            {
                context.Response.ContentType = "image/png";
            }
            else if (imageExtension.Equals("gif", StringComparison.CurrentCultureIgnoreCase))
            {
                context.Response.ContentType = "image/gif";
            }

            #endregion

            context.Response.Cache.SetCacheability(HttpCacheability.Public);
            context.Response.Cache.SetMaxAge(new TimeSpan(7, 0, 0, 0));

            context.Response.BufferOutput = false;

            if (!fi.Exists)
            {
                //get it!
                if (imageid != null)
                {
                    var image     = ImageDbService.RetrieveImageOnThefly(imageid);
                    var stream    = new System.IO.MemoryStream(image.Data);
                    var newstream = new MemoryStream();

                    try
                    {
                        //save locally
                        var di = Directory.CreateDirectory(fi.DirectoryName);

                        System.Drawing.Image i    = System.Drawing.Image.FromStream(stream);
                        System.Drawing.Image newi = null;
                        if (width > 0 && height > 0 && (width != i.Width || height != i.Height))
                        {
                            if (keepRatio)
                            {
                                newi = ImageService.ScaleImageToFixedSize(i, new System.Drawing.Size(width, height));
                            }
                            else
                            {
                                newi = ImageService.ResizeImage(i, new System.Drawing.Size(width, height));
                            }

                            newi.Save(newstream, i.RawFormat);
                        }
                        else if (width > 0 && width != i.Width)
                        {
                            newi = ImageService.ScaleImageToWidth(i, width);
                            newi.Save(newstream, i.RawFormat);
                        }
                        else if (height > 0 && height != i.Height)
                        {
                            newi = ImageService.ScaleImageToHeight(i, height);
                            newi.Save(newstream, i.RawFormat);
                        }
                        else if (square > 0)
                        {
                            if (i.Width >= i.Height)
                            {
                                newi = ImageService.ScaleImageToHeight(i, square);
                            }
                            else
                            {
                                newi = ImageService.ScaleImageToWidth(i, square);
                            }

                            int cx = (newi.Width / 2) - (square / 2);
                            int cy = (newi.Height / 2) - (square / 2);
                            newi = ImageService.CropImage(newi, cx, cy, square, square);
                            newi.Save(newstream, i.RawFormat);
                        }
                        else
                        {
                            newi      = i;
                            newstream = stream;
                        }

                        newi.Save(fi.FullName, i.RawFormat);
                        newi.Dispose();
                        i.Dispose();
                    }
                    catch
                    {
                        //ignore
                    }

                    if (newstream != null)
                    {
                        newstream.Position = 0;
                        const int buffersize = 1024 * 16;
                        byte[]    buffer     = new byte[buffersize];

                        int count = newstream.Read(buffer, 0, buffersize);
                        while (count > 0)
                        {
                            context.Response.OutputStream.Write(buffer, 0, count);
                            count = newstream.Read(buffer, 0, buffersize);
                        }

                        newstream.Close();
                        newstream.Dispose();
                    }

                    stream.Close();
                    stream.Dispose();
                }
            }
            else
            {
                //send it !
                context.Response.WriteFile(context.Server.MapPath(findPath));
            }

            context.Response.End();
        }
Beispiel #8
0
        private void LoadEcr3Tickets(List <OrderLine> orderLines)
        {
            _attractionCount = orderLines.Count(a =>
                                                a.TicketTorA.Equals("attraction", StringComparison.CurrentCultureIgnoreCase));

            //get all Ecr barcodes
            var barcodes = ImageDbService.GetOrderEcrBarcodes(_order.OrderNumber);

            //make sure we have some barcodes
            if (barcodes == null || barcodes.Count < 1)
            {
                Log("Barcodes failed to retrieve for ordernumber: " + _order.OrderNumber);
                return;
            }

            //group orderlines by barcode images
            foreach (var barcode in barcodes.ToList())
            {
                //get corresponding orderlines  *** when u save ticket id in barcodes, get our ticketid from ecr productuid
                var tempOrderLines = orderLines.Where(x => x.TicketId != null && x.TicketId.Value.ToString().Equals(barcode.TicketId, StringComparison.CurrentCultureIgnoreCase));

                if (!tempOrderLines.Any())
                {
                    continue;
                }

                var ticket = TicketService.GetTicketById(barcode.TicketId);

                var topOrderLine = tempOrderLines.FirstOrDefault();

                if (topOrderLine == null)
                {
                    continue;
                }

                var microsite = SiteService.GetMicroSiteById(topOrderLine.MicrositeId);

                var validTicketName = ticket.Name.ToLower().Contains(microsite.Name.ToLower())
                    ? ticket.Name
                    : string.Concat(microsite.Name, " ", ticket.Name);

                var voucherTicket =
                    new VoucherTicket
                {
                    UseQrCode       = true,
                    OrderLines      = tempOrderLines.ToList(),
                    Ticket          = ticket,
                    ImageData       = ImageDbService.GetImageMetaData(barcode.ImageId),
                    ValidTicketName = validTicketName
                };

                //only load ticket image if we have an attraction
                if (ticket.IsAttraction)
                {
                    voucherTicket.AttractionImageData = ticket.ImageMetaDataId != null
                       ? ImageDbService.GetMetaData(ticket.ImageMetaDataId.Value.ToString())
                       : null;
                }
            }

            //PopulateVoucherTickets();
        }
 public ImageMetaData GetOrderImageMetaData(Order order)
 {
     return(ImageDbService.GetImageMetaDataByName(string.Format(Services.Implementation.ImageDbService.QrImageNameFormat, order.OrderNumber,
                                                                "Ecr")));
 }