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); }
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); }
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); }
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(); } }
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); }
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); }
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); }
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()); } }
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()); }
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); }
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);
private void CropAndCompress(Entities.Image image) { // crop and compress algorithm goes here... System.Threading.Thread.Sleep(_random.Next(400, 600)); }
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(); } }