Пример #1
0
 private void AssessDamageAndPriority(Entities.Image image)
 {
     // AI logic goes here...
     image.Priority            = Entities.PriorityEnum.Medium;
     image.AnalyserDescription = "Description";
     System.Threading.Thread.Sleep(_random.Next(800, 1200));
 }
        /// <summary>
        ///		Creates a new instance of a Image.
        /// </summary>
        /// <returns>The new Image instance. </returns>
        public static Entities.Image Factory()
        {
            OnCreating();
            Entities.Image image = new Entities.Image();
            OnCreated(image);

            return(image);
        }
Пример #3
0
        private void UpdateTicketWithImageAndPriority(Entities.Ticket ticket, Entities.Image image)
        {
            var existingTicket = _repository.GetBy(ticket.Id);

            existingTicket.AddImage(image);
            _repository.UpdatePriority(existingTicket);
            _repository.AttachImage(ticket, image);
        }
Пример #4
0
        public async void StoreImage(Entities.Image image)
        {
            var storageUrl = System.IO.Path.Combine("https://psmadd4asimagestorage.blob.core.windows.net/images/", $"{image.Id.ToString()}-{image.Name}");

            var credentials = new StorageCredentials(storageAccount, storageKey);
            var blob        = new Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob(new Uri(storageUrl), credentials);
            await blob.UploadFromByteArrayAsync(image.Body, 0, image.Body.Length);
        }
Пример #5
0
        private void Validate(Entities.Image image)
        {
            // validation logic goes here...
            System.Threading.Thread.Sleep(_random.Next(800, 1200));
            var isValid = true;

            if (!isValid)
            {
                throw new ImageNotValidException();
            }
        }
Пример #6
0
        public void ForTicket(Entities.Ticket ticket, Entities.Image image)
        {
            // 1. validate image - it pictures a damaged vehicle
            Validate(image);

            // 2. analyse the image - use AI tool to estimate damage and set priority
            AssessDamageAndPriority(image);

            // 3. crop and compress the image
            CropAndCompress(image);

            // 4. update ticket
            UpdateTicketWithImageAndPriority(ticket, image);
        }
Пример #7
0
        public static Entities.Image ToCore(this Model.Image image)
        {
            Entities.Image result = null;

            if (image != null)
            {
                result = new Entities.Image()
                {
                    Id                  = image.Id,
                    Name                = image.Name,
                    UserDescription     = image.UserDescription,
                    AnalyserDescription = image.AnalyserDescription,
                    Priority            = (Entities.PriorityEnum)image.Priority
                };
            }

            return(result);
        }
Пример #8
0
        public static Model.Image FromCore(this Entities.Image image)
        {
            Model.Image result = null;

            if (image != null)
            {
                result = new Model.Image()
                {
                    Id                  = image.Id,
                    Name                = image.Name,
                    UserDescription     = image.UserDescription,
                    AnalyserDescription = image.AnalyserDescription,
                    Priority            = (int)image.Priority
                };
            }

            return(result);
        }
Пример #9
0
        public Guid AttachImage(Entities.Ticket ticket, Entities.Image image)
        {
            var result = Guid.Empty;

            using (var context = new TicketingContext())
            {
                var dbEntity = image.FromCore();
                dbEntity.TicketId = ticket.Id;
                context.Images.Add(dbEntity);
                context.SaveChanges();

                result   = dbEntity.Id;
                image.Id = dbEntity.Id;
            }

            _storage.StoreImage(image);

            return(result);
        }
    public async Task <IActionResult> Upload(string name, IFormFile file)
    {
        if (file == null || file.Length == 0)
        {
            return(BadRequest());
        }
        using (var ms = new MemoryStream())
        {
            file.CopyTo(ms);
            var img = new Entities.Image
            {
                Name        = file.FileName,
                ContentType = file.ContentType,
                Data        = ms.ToArray()
            };
            await _repo.CreateImage(img);

            return(Ok());
        }
    }
Пример #11
0
        public async Task <ActionResult> UploadImage([FromForm] Model.UploadFileRequest request)
        {
            var image = new Entities.Image()
            {
                UserDescription = request.Description,
                Body            = new byte[request.File.Length],
                Name            = request.File.FileName
            };

            request.File.OpenReadStream().Read(image.Body, 0, image.Body.Length);

            _imageProcessor.ForTicket(
                new Entities.Ticket()
            {
                Id = request.TicketId
            },
                image);

            return(Ok());
        }
Пример #12
0
        public int AddImage(Image image)
        {
            var user = _dbContext.Users.SingleOrDefault(x => x.Id == image.UserId);

            var folder = image.FolderId == null
                ? null
                : _dbContext.Folders.SingleOrDefault(x => x.Id == image.FolderId);

            var entity = new Entities.Image
            {
                Name    = image.Name,
                Guid    = image.Guid,
                User    = user,
                Folder  = folder,
                Path    = image.Path,
                Starred = image.Starred,
            };

            _dbContext.Images.Add(entity);
            _dbContext.SaveChanges();

            return(entity.Id);
        }
Пример #13
0
        public async Task SetNewThumbnailAsync(int imageId, int carId)
        {
            var thumbnail = (await _thumbnailRepository.GetAllAsync(t => t.CarFk == carId)).SingleOrDefault();

            Entities.Image image = await _imageRepository.GetByIdAsync(imageId);

            byte[] file = ResizeImage(image.File, ConfigurationConstants.ThumnbailWidth, ConfigurationConstants.ThumbnailHeight, image.ImageType);

            if (thumbnail != null)
            {
                thumbnail.File      = file;
                thumbnail.ImageType = image.ImageType;
                await _thumbnailRepository.UpdateAsync(thumbnail);
            }
            else
            {
                await _thumbnailRepository.AddAsync(new Thumbnail
                {
                    CarFk     = carId,
                    File      = file,
                    ImageType = image.ImageType
                });
            }
        }
 //	This partial method gives us a way to access an object after it has been added to the system.
 static partial void OnCreated(Entities.Image image);
Пример #15
0
 private void CropAndCompress(Entities.Image image)
 {
     // crop and compress algorithm goes here...
     System.Threading.Thread.Sleep(_random.Next(400, 600));
 }
Пример #16
0
        private void analysisDatabase(string inputDatabaseDir, string imageDatabaseName)
        {
            string[] imageClassDirArray = Directory.GetDirectories(inputDatabaseDir);
            imageDatabase = new ImageDatabase
            {
                DatabaseName    = imageDatabaseName,
                ImageDatabaseId = Guid.NewGuid(),
                TotalUser       = imageClassDirArray.Length,
            };

            List <int> imagesUserList  = new List <int>();
            List <int> imageHeightList = new List <int>();
            List <int> imageWidthList  = new List <int>();

            for (int i = 0; i < imageClassDirArray.Length; i++)
            {
                string   imageUserName     = imageClassDirArray[i].Substring(imageClassDirArray[i].LastIndexOf('\\') + 1);
                string[] imageFileDirArray = Directory.GetFiles(inputDatabaseDir + imageUserName);
                imagesUserList.Add(imageFileDirArray.Length);
                var user = new User
                {
                    Username        = imageUserName,
                    ImageDatabaseId = imageDatabase.ImageDatabaseId,
                    UserId          = Guid.NewGuid(),
                };
                userList.Add(user);

                for (int j = 0; j < imageFileDirArray.Length; j++)
                {
                    string imageName         = imageFileDirArray[j].Substring(imageFileDirArray[j].LastIndexOf('\\') + 1);
                    System.Drawing.Image img = System.Drawing.Image.FromFile(imageFileDirArray[j]);
                    imageHeightList.Add(img.Height);
                    imageWidthList.Add(img.Width);
                    byte[] arr;
                    using (MemoryStream ms = new MemoryStream())
                    {
                        img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                        arr = ms.ToArray();
                    }

                    var photoImage = new Entities.Image
                    {
                        Format         = "JPEG",
                        ImageByteArray = arr,
                        UserId         = user.UserId,
                        ImageId        = Guid.NewGuid(),
                        ImageName      = imageName,
                    };
                    imageList.Add(photoImage);
                }
            }

            if (isSameValueInArray(imagesUserList))
            {
                imageDatabase.isSameTotalImageForUser = true;
                imageDatabase.TotalImageForUser       = imagesUserList.First();
            }

            if (isSameValueInArray(imageHeightList) && isSameValueInArray(imageWidthList))
            {
                imageDatabase.isSameImageSize = true;
                imageDatabase.ImageHeight     = imageHeightList.First();
                imageDatabase.ImageWidth      = imageWidthList.First();
            }
        }