Exemple #1
0
        // 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));
        }
Exemple #2
0
        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));
        }
Exemple #3
0
        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());
            }
        }