示例#1
0
        public byte[] CreateArchive(SageImageWorkOrder pictures)
        {
            var pathToImg       = Path.Combine(_urlToFolderPhotoWorkOrders, pictures.WorkOrder.ToString());
            var path            = _storageProvider.GetPublicUrl(pathToImg);
            var outputMemStream = new MemoryStream();
            var zipStream       = new ZipOutputStream(outputMemStream);

            zipStream.SetLevel(3);

            foreach (var record in pictures.Images.Where(x => !x.IsDeleted))
            {
                byte[] bytes;
                try
                {
                    bytes = _storageProvider.GetFile(Path.Combine(path, record.BigImage)).OpenRead().ReadAsBytes();
                }
                catch (Exception)
                {
                    continue;
                }
                var newEntry = new ZipEntry(record.BigImage)
                {
                    DateTime = DateTime.Now
                };
                zipStream.PutNextEntry(newEntry);
                var inStream = new MemoryStream(bytes);
                StreamUtils.Copy(inStream, zipStream, new byte[4096]);
                inStream.Close();
                zipStream.CloseEntry();
            }
            zipStream.IsStreamOwner = false;
            zipStream.Close();
            outputMemStream.Position = 0;
            return(outputMemStream.ToArray());
        }
示例#2
0
        public ImageLocation SavePhotoForWorkOrder(ImageModel model)
        {
            var workOrder = this.repository.SearchFor <SageWorkOrder>(x => x.WorkOrder == model.IdWorkOrder).SingleOrDefault();

            if (workOrder == null)
            {
                return(null);
            }

            var imagesDb   = repository.SearchFor <SageImageWorkOrder>(x => x.WorkOrder == model.IdWorkOrder).SingleOrDefault();
            var countImage = 1;

            if (imagesDb != null && imagesDb.Images != null)
            {
                countImage = imagesDb.Images.Last().Id + 1;
            }
            else
            {
                imagesDb = new SageImageWorkOrder
                {
                    Images          = new List <ImageLocation>(),
                    WorkOrder       = model.IdWorkOrder,
                    WorkOrderBsonId = workOrder.Id,
                };
            }

            //var pathToImage = Path.Combine(this.httpContextProvider.MapPath(this._urlToFolderPhotoWorkOrders), model.IdWorkOrder.ToString());
            var pathToImage   = _storageProvider.GetPublicUrl(Path.Combine(this._urlToFolderPhotoWorkOrders, model.IdWorkOrder.ToString()));
            var nameBig       = $"{workOrder.WorkOrder}-{countImage}";
            var nameSmall     = $"{small}-{workOrder.WorkOrder}-{countImage}";
            var fileName      = SavePhotoForWorkOrder(model.Image, pathToImage, nameBig, settings.SizeBigPhoto, workOrder, countImage);
            var fileNameSmall = SavePhotoForWorkOrder(model.Image, pathToImage, nameSmall, this.settings.SizeSmallPhoto, workOrder, countImage);
            var maxId         = imagesDb.Images.Any() ? imagesDb.Images.Max(x => x.Id) : 0;
            var image         = new ImageLocation {
                Image = fileNameSmall, BigImage = fileName, Latitude = model.Latitude, Longitude = model.Longitude, Id = maxId + 1, Description = model.Description
            };

            imagesDb.Images.Add(image);
            repository.Add(imagesDb);
            var milliseconds = DateTime.Now.TimeOfDay.TotalMilliseconds;

            image.Image    += $"?{milliseconds}";
            image.BigImage += $"?{milliseconds}";
            _hub.UpdateWorkOrderPicture(imagesDb);
            return(image);
        }
示例#3
0
 public void UpdateWorkOrderPicture(SageImageWorkOrder model)
 {
     this._clients.All.UpdateWorkOrderPicture(model);
 }