示例#1
0
        public string AddImage(string ddlAlbums, string ddlConditions,
                               string ddlFeatures)
        {
            var image = new tblImage();

            try
            {
                var      dbCtx = new CUATRGEntities4();
                tblAlbum album = dbCtx.tblAlbums.FirstOrDefault(a => a.ALB_Name == ddlAlbums);
                if (album == null)
                {
                    album                 = dbCtx.tblAlbums.Create();
                    album.ALB_Name        = ddlAlbums;
                    album.ALB_Description = ddlAlbums;
                }


                tblEnvironmentalCondition condition = dbCtx.tblEnvironmentalConditions.FirstOrDefault(a => a.ENC_Name == ddlConditions);
                if (condition == null)
                {
                    condition                 = dbCtx.tblEnvironmentalConditions.Create();
                    condition.ENC_Name        = ddlConditions;
                    condition.ENC_Description = ddlConditions;
                }

                tblFeature feature = dbCtx.tblFeatures.FirstOrDefault(a => a.FTR_Name == ddlFeatures);
                if (feature == null)
                {
                    feature          = dbCtx.tblFeatures.Create();
                    feature.FTR_Name = ddlFeatures;
                }

                image.tblAlbum = album;
                image.tblEnvironmentalCondition = condition;
                image.tblFeature = feature;

                log.Info("Saving files started");

                var files = HttpContext.Current.Request.Files.Count > 0 ?
                            HttpContext.Current.Request.Files : null;

                log.InfoFormat("Files {0} , Album {1}, Condition {2}, Feature {3} ",
                               string.Join(",", files.AllKeys), ddlAlbums, ddlConditions, ddlFeatures);

                if (files != null)
                {
                    foreach (var file in files.AllKeys)
                    {
                        var path         = string.Format("~/Images/Albums/{0}", ddlAlbums);
                        var relativePath = string.Format("Images/Albums/{0}", ddlAlbums);
                        var fileName     = files[file].FileName;

                        if (fileName.Contains("Image") || fileName.Contains("IMG"))
                        {
                            image.IMG_Name = fileName;
                            image.IMG_Path = relativePath;
                        }
                        else if (fileName.Contains("Sensor"))
                        {
                            image.IMG_SensorDataPath = relativePath;
                        }
                        else if (fileName.Contains("Meta"))
                        {
                            image.IMG_MetaDataPath = relativePath;
                        }

                        if (ImageHelper.IsExists(image))
                        {
                            throw new InvalidOperationException("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("Retriving Exif data started");
                ImageHelper.ExtractMetaData(image);

                log.Info("Saving db data started");

                //Add newStudent entity into DbEntityEntry and mark EntityState to Added
                dbCtx.Entry(image).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}", image.IMG_Name, error), ex);
                return("ERROR:" + ex.Message.ToString());
            }
            catch (Exception ex)
            {
                log.Error(string.Format("Error saving image {0}", image.IMG_Name), ex);
                return(ex.ToString());
            }
        }
示例#2
0
        public ActionResult AddImage(string name, string ddlAlbums, string ddlConditions,
                                     string ddlFeatures, HttpPostedFileBase masterimage, HttpPostedFileBase sensordata)
        {
            var image = new tblImage();

            try
            {
                int albumId = -1;
                if (!int.TryParse(ddlAlbums, out albumId))
                {
                    throw new InvalidDataException("Error in album id");
                }

                int conditionid = -1;
                if (!int.TryParse(ddlConditions, out conditionid))
                {
                    throw new InvalidDataException("Error in condition id");
                }

                int filterId = -1;
                if (!int.TryParse(ddlFeatures, out filterId))
                {
                    throw new InvalidDataException("Error in filter id");
                }

                //set image data
                image.IMG_Name = name;
                var      dbCtx = new CUATRGEntities4();
                tblAlbum album = dbCtx.tblAlbums.FirstOrDefault(a => a.ALB_IDPkey == albumId);
                tblEnvironmentalCondition condition = dbCtx.tblEnvironmentalConditions.FirstOrDefault(a => a.ENC_IDPkey == conditionid);
                tblFeature feature = dbCtx.tblFeatures.FirstOrDefault(a => a.FTR_IDPkey == filterId);

                image.tblAlbum = album;
                image.tblEnvironmentalCondition = condition;
                image.tblFeature = feature;

                image.IMG_Path           = string.Format("Images/Albums/{0}", album.ALB_Name);
                image.IMG_SensorDataPath = string.Format("Images/Albums/{0}", album.ALB_Name);

                string[] imagaeData = masterimage.FileName.Split('\\');
                image.IMG_Name = imagaeData[imagaeData.Length - 1];

                if (ImageHelper.IsExists(image))
                {
                    throw new InvalidOperationException("Image Exists");
                }

                log.Info("Saving files started");

                FileHelper.SaveFile(image, masterimage, image.IMG_Name);
                FileHelper.SaveFile(image, sensordata, image.IMG_Name.Replace("IMG", "SensorData").Replace("jpg", "csv"));

                log.Info("Saving files completed");


                log.Info("Retriving Exif data started");
                ImageHelper.ExtractMetaData(image);

                log.Info("Saving db data started");
                //Add newStudent entity into DbEntityEntry and mark EntityState to Added
                dbCtx.Entry(image).State = EntityState.Added;

                // call SaveChanges method to save new Student into database
                dbCtx.SaveChanges();
                log.Info("Saving db data completed");

                log.Info("View generation completed");

                ViewBag.Message = "Successfully uploaded";
            }
            catch (Exception ex)
            {
                log.Error(string.Format("Error uploading image {0}", image.IMG_Name));
                ViewBag.Message = "ERROR:" + ex.Message.ToString();
            }
            var viewModel = new AddImageViewModel()
            {
                Albums     = imageDB.tblAlbums.ToList(),
                Conditions = imageDB.tblEnvironmentalConditions.ToList(),
                Features   = imageDB.tblFeatures.ToList()
            };

            return(View(viewModel));
        }