// GET: /Store/Browse public ActionResult Details(int albumId, int?imageId = null, int?processedImageId = null, int?conditionId = null, int?featureId = null) { string message = HttpUtility.HtmlEncode("Store.Browse, Album = " + albumId); tblAlbum selectedAlbum = null; tblImage selectedMasterImage = null; tblProcessedImage selectedProcessedImage = null; selectedAlbum = imageDB.tblAlbums.SingleOrDefault(a => a.ALB_IDPkey == albumId); var query = imageDB.tblImages.Where(i => i.ALB_IDFkey == albumId); List <tblImage> images = query.ToList(); if (imageId != null) { selectedMasterImage = images.SingleOrDefault(i => i.IMG_IDPkey == imageId); } else { selectedMasterImage = images.FirstOrDefault(); } int selectedIndex = images.IndexOf(selectedMasterImage); int nextIndex = images.Count() - 1; int previousIndex = 0; if (images.Count() - 1 > selectedIndex) { nextIndex = selectedIndex + 1; } if (selectedIndex - 1 >= 0) { previousIndex = selectedIndex - 1; } if (processedImageId != null) { selectedProcessedImage = selectedMasterImage.tblProcessedImages.SingleOrDefault(p => p.PIM_IDPkey == processedImageId.Value); } else { selectedProcessedImage = selectedMasterImage.tblProcessedImages.SingleOrDefault(p => p.tblFilter.FLT_Name == "JPEG"); } var viewModel = new ImageDetailsViewModel { Image = selectedMasterImage, NextImage = images.ElementAt(nextIndex), PreviousImage = images.ElementAt(previousIndex), ProcessedImage = selectedProcessedImage, AvailableConditions = selectedAlbum.tblImages.Select(i => i.tblEnvironmentalCondition).Distinct().ToList(), AvailableFeatures = selectedAlbum.tblImages.Select(i => i.tblFeature).Distinct().ToList() }; return(this.View(viewModel)); }
public static bool IsProcessedImageExists(tblProcessedImage image) { var dbCtx = new CUATRGEntities4(); return(dbCtx.tblProcessedImages.Any <tblProcessedImage>(i => i.PIM_Name == image.PIM_Name && i.FLT_IDFkey == image.tblFilter.FLT_IDPkey && i.IMG_IDFkey == image.tblImage.IMG_IDPkey)); }
public string AddProcessedImage(string name, string filterType, string filterName) { var processedImage = new tblProcessedImage(); try { var para = name.Split('_'); var masterImageName = "image_" + para[para.Length - 1]; var dbCtx = new CUATRGEntities4(); var masterImage = dbCtx.tblImages.FirstOrDefault(i => i.IMG_Name == masterImageName); processedImage.tblImage = masterImage ?? throw new InvalidOperationException("Image not found"); var filter = dbCtx.tblFilters.FirstOrDefault(i => i.FLT_Name == filterName && i.FLT_Description == filterType); processedImage.tblFilter = filter ?? throw new InvalidOperationException("Filter not found"); processedImage.CMD_IDFkey = 1;//Fixed color mode to RGP log.Info("Saving files started"); var files = HttpContext.Current.Request.Files.Count > 0 ? HttpContext.Current.Request.Files : null; log.InfoFormat("Files {0} , Name {1}, Filter Type {2}, Filter Name {3} ", string.Join(",", files.AllKeys), name, filterType, filterName); if (files != null) { foreach (var file in files.AllKeys) { var path = string.Format("~/{0}", masterImage.IMG_Path); var relativePath = masterImage.IMG_Path; var fileName = files[file].FileName; log.InfoFormat("File name : {0}", fileName); if (fileName.Contains("Image") || fileName.Contains("IMG")) { processedImage.PIM_Name = fileName; processedImage.PIM_Path = relativePath; } if (ImageHelper.IsProcessedImageExists(processedImage)) { throw new InvalidOperationException("Processed Image Exists"); } var mappedPath = System.Web.Hosting.HostingEnvironment.MapPath(path); var filePath = Path.Combine(mappedPath, Path.GetFileName(fileName)); if (!Directory.Exists(mappedPath)) { log.Info("Creating directory"); Directory.CreateDirectory(mappedPath); } string user = System.Security.Principal.WindowsIdentity.GetCurrent().User.Value; var uploadedFile = files[file]; uploadedFile.SaveAs(filePath); } } log.Info("Saving files completed"); log.Info("Saving db data started"); //Add newStudent entity into DbEntityEntry and mark EntityState to Added dbCtx.Entry(processedImage).State = EntityState.Added; // call SaveChanges method to save new Student into database dbCtx.SaveChanges(); log.Info("Saving db data completed"); return("OK"); } catch (DbEntityValidationException ex) { var valErrors = ex.EntityValidationErrors.SelectMany(e => e.ValidationErrors); var error = string.Join(",", valErrors.Select(e => e.ErrorMessage)); log.Error(string.Format("Error uploading image {0} - {1}", processedImage.PIM_Name, error), ex); return("ERROR:" + ex.Message.ToString()); } catch (Exception ex) { log.Error(string.Format("Error uploading image {0}", processedImage.PIM_Name), ex); return("ERROR:" + ex.Message.ToString()); } }