Exemple #1
0
        /// <summary>
        /// Uploads and saves a file
        /// </summary>
        /// <param name="siteId"></param>
        /// <param name="groupIds"></param>
        /// <param name="userId"></param>
        /// <param name="title"></param>
        /// <param name="description"></param>
        /// <param name="fileFullPath"></param>
        /// <param name="fileContent"></param>
        /// <param name="isEnabled"></param>
        /// <param name="size">if the file is an image and the size is set then the image will be resized</param>
        /// <returns></returns>
        public long Upload(long siteId, long[] groupIds, long userId, string title, string description,
                           string fileFullPath, System.IO.Stream fileStream, bool isEnabled, string size)
        {
            //throw error in case of validation problem
            ValidateToUpdateFile(siteId, userId, groupIds);

            //SAVE THE FILE ------------------------------------------------------
            awFile file = new awFile();

            file.fileId = MiscLibrary.CreateUniqueId();

            string     resourceFileName = GetFileNameOnly(fileFullPath);
            string     extension        = GetFileExension(resourceFileName);
            bool       isVideoFile      = _videoLib.isVideoFile(extension);
            int        contentLength    = (int)fileStream.Length;
            string     filePath         = "";
            bool       saveOnLocal      = isVideoFile || !FileAmazonS3.SaveOnAmazonS3();
            SAVED_FILE savedFileInfo    = new SAVED_FILE();

            //SAVE THE FILE FIRST
            try
            {
                file.contentType = GetContentType(AWAPI_BusinessLibrary.library.ConfigurationLibrary.Config.fileMimeXMLPath, extension);

                filePath      = CreateFilePath(saveOnLocal, siteId, file.fileId, extension);
                savedFileInfo = SaveFile(siteId, saveOnLocal, file.contentType, filePath, fileStream, size.Trim());

                file.isOnLocal     = saveOnLocal;
                file.contentSize   = contentLength;
                file.path          = savedFileInfo.filePath.ToLower();
                file.siteId        = siteId;
                file.title         = String.IsNullOrEmpty(title) ? resourceFileName : title;
                file.description   = description;
                file.link          = GetUrl(file.fileId, savedFileInfo.filePath, "").ToLower();
                file.pubDate       = DateTime.Now;
                file.lastBuildDate = DateTime.Now;
                file.isEnabled     = isEnabled;
                file.userId        = userId;
                file.createDate    = DateTime.Now;

                _context.awFiles.InsertOnSubmit(file);
                _context.SubmitChanges();
            }
            catch (Exception ex)
            {
                DeleteFromStorage(siteId, saveOnLocal, filePath);
                throw ex;
            }

            //add file to groups
            AddFileToGroups(file.fileId, groupIds);

            //IF FILE IS A VIDEO FILE THEN CONVERT IT
            if (isVideoFile)
            {
                IfVideoConvertToFLV(file.fileId);
            }

            return(file.fileId);
        }
Exemple #2
0
        /// <summary>
        /// Add file with URL address
        /// </summary>
        /// <param name="siteId"></param>
        /// <param name="groupIds"></param>
        /// <param name="userId"></param>
        /// <param name="title"></param>
        /// <param name="description"></param>
        /// <param name="fileUrl"></param>
        /// <param name="isEnabled"></param>
        /// <returns></returns>
        public long Add(long siteId, long fileId, long[] groupIds, long userId, string title, string description,
                        string fileUrl, string thumbUrl, bool isEnabled)
        {
            //Check if all the file groups exist---------------
            var groupList = from g in _context.awFileGroups
                            where groupIds.Contains(g.fileGroupId)
                            select g;

            if (groupList == null || groupList.Count() < groupIds.Length)
            {
                throw new Exception("One or more file groups do not exist");
            }

            //Save the file
            awFile file = new awFile();

            file.fileId = fileId > 0 ? fileId : MiscLibrary.CreateUniqueId();

            string resourceFileName = GetFileNameOnly(fileUrl);
            string extension        = GetFileExension(resourceFileName);

            //SAVE THE FILE FIRST
            try
            {
                file.contentType   = GetContentType(AWAPI_BusinessLibrary.library.ConfigurationLibrary.Config.fileMimeXMLPath, extension);
                file.isOnLocal     = false; //this also can be used for external urls (not only amazon)
                file.contentSize   = 0;
                file.path          = fileUrl.ToLower();
                file.siteId        = siteId;
                file.title         = String.IsNullOrEmpty(title) ? resourceFileName : title;
                file.description   = description;
                file.link          = fileUrl.ToLower();
                file.thumbnail     = thumbUrl.ToLower();
                file.pubDate       = DateTime.Now;
                file.lastBuildDate = DateTime.Now;
                file.isEnabled     = isEnabled;
                file.userId        = userId;
                file.createDate    = DateTime.Now;

                _context.awFiles.InsertOnSubmit(file);
                _context.SubmitChanges();
            }
            catch (Exception ex)
            {
                throw ex;
            }

            //add file to groups
            AddFileToGroups(file.fileId, groupIds);
            return(file.fileId);
        }
Exemple #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="fileId"></param>
        public void Delete(long fileId)
        {
            if (fileId <= 0)
            {
                return;
            }

            new AWAPI_BusinessLibrary.library.BlogLibrary().RemoveFileBlogPostRelationByFileId(fileId);

            //Delete contest entry relation
            new AWAPI_BusinessLibrary.library.ContestLibrary().DeleteContestEntriesByFileId(fileId);

            //delete filegroup relation
            DeleteFileGroupRelationByFileId(fileId);

            var files = from f in _context.awFiles
                        where f.fileId.Equals(fileId)
                        select f;

            if (files == null || files.Count() == 0)
            {
                return;
            }

            awFile file = files.First();

            _context.awFiles.DeleteOnSubmit(file);
            _context.SubmitChanges();


            if (file.path != null)
            {
                DeleteFromStorage(file.siteId, file.isOnLocal, file.path);
                if (!String.IsNullOrEmpty(file.thumbnail))
                {
                    DeleteFromStorage(file.siteId, file.isOnLocal, file.thumbnail);
                }

                //delete the thumbs
                if (file.isOnLocal)
                {
                    DeleteThumbs(file.fileId, file.path);
                }
            }
        }
Exemple #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="id"></param>
        /// <param name="size"></param>
        /// <param name="pushSize"></param>
        /// <returns></returns>
        public FileInfo GetFileInfo(long id, string size, bool pushSize)
        {
            FileInfo fi = new FileInfo();

            fi.Id           = id;
            fi.SiteId       = 0;
            fi.Path         = "";
            fi.PathWithSize = "";
            fi.Extension    = "";
            fi.ContentType  = "image/jpeg";
            fi.isOnLocal    = false;

            //GetFileInfo image
            awFile file = _context.awFiles.FirstOrDefault(i => i.fileId.Equals(fi.Id));

            if (file == null)
            {
                return(fi);
            }

            fi.SiteId    = file.siteId;
            fi.isOnLocal = file.isOnLocal;
            fi.Path      = file.path;
            fi.FileName  = String.IsNullOrEmpty(file.title) ?
                           GetFileNameOnly(fi.Path) :
                           file.title.Replace(" ", "_").Replace("'", "") + "." + fi.Extension;


            if (fi.isOnLocal && !File.Exists(fi.Path))
            {
                //fi.Path = AWAPI_FilePath + "\\ImageNotAvailable.jpg";
                //string source = HttpContext.Current.Server.MapPath("~/ImageNotAvailable.jpg");
                fi.Path = HttpContext.Current.Server.MapPath("~/img/imageNotAvailable.jpg");
                //if (!File.Exists(fi.Path))
                //  File.Copy(source, fi.Path);
            }

            fi.Extension    = GetFileExension(fi.Path);
            fi.PathWithSize = fi.Path;

            //example without pushSize  : c:\temp\34234234_300x100.jpg
            //example with pushSize     : c:\temp\34234234_300x100_cropped.jpg
            if (!string.IsNullOrEmpty(size))
            {
                if (!pushSize)
                {
                    fi.PathWithSize = fi.Path.Replace("." + fi.Extension, "") +
                                      "_" + size + "." + fi.Extension;
                }
                else
                {
                    fi.PathWithSize = fi.Path.Replace("." + fi.Extension, "") +
                                      "_" + size + "_fixed." + fi.Extension;
                }
            }

            //get the fileContent type
            if (file.contentType != null && file.contentType != "")
            {
                fi.ContentType = file.contentType;
            }
            else
            {
                fi.ContentType = GetContentType(AWAPI_BusinessLibrary.library.ConfigurationLibrary.Config.fileMimeXMLPath, fi.Extension);
            }

            return(fi);
        }
Exemple #5
0
        /// <summary>
        /// If file is video, then convert it to FLV,
        /// delete the original file, update the database
        /// with new flv's attributes
        /// </summary>
        /// <param name="fileId"></param>
        /// <returns>Returns the file's full path</returns>
        void IfVideoConvertToFLV(long fileId)
        {
            try
            {
                //Get the file from DB
                awFile file = (from l in _context.awFiles
                               where l.fileId.Equals(fileId)
                               select l).FirstOrDefault();
                if (file == null)
                {
                    return;
                }

                string extension = GetFileExension(file.path);
                string path      = file.path;

                //Only Video Files, (flv won't be converted)
                if (!_videoLib.isVideoFile(extension))
                {
                    return;
                }

                //CONVERT and GET THE NEW FILES LOCATION
                OutputPackage videoPackage = _videoLib.ConvertToFLV(path);

                //GET THE NEW FILES INFO
                file.contentSize = videoPackage.Length;
                file.contentType = GetContentType(AWAPI_BusinessLibrary.library.ConfigurationLibrary.Config.fileMimeXMLPath, "flv");

                SAVED_FILE savedFile = new SAVED_FILE();
                if (FileAmazonS3.SaveOnAmazonS3())
                {
                    //load the flv file into byte array, and save it to amazon s3
                    FileStream fileStream = new FileStream(videoPackage.Path, System.IO.FileMode.Open);

                    //SAVE THE VIDEO FILE
                    string keyName = String.Format("{0}/{1}.flv", file.siteId, file.fileId);

                    savedFile = SaveFile(file.siteId, false, file.contentType, keyName, fileStream, "");
                    System.IO.File.Delete(videoPackage.Path);
                    file.path = savedFile.filePath;

                    //SAVE THE THUMB
                    if (videoPackage.PreviewImage != null && !String.IsNullOrEmpty(videoPackage.PreviewImagePath) &&
                        System.IO.File.Exists(videoPackage.PreviewImagePath))
                    {
                        string     thumbFile          = String.Format("{0}/{1}.jpg", file.siteId, file.fileId);
                        FileStream videoPreviewStream = new FileStream(videoPackage.PreviewImagePath, System.IO.FileMode.Open);
                        savedFile      = SaveFile(file.siteId, false, "image/jpeg", thumbFile, videoPreviewStream, "");
                        file.thumbnail = savedFile.filePath;

                        if (System.IO.File.Exists(videoPackage.PreviewImagePath))
                        {
                            System.IO.File.Delete(videoPackage.PreviewImagePath);
                        }
                    }
                    file.isOnLocal = false;
                }
                else
                {
                    file.isOnLocal = true;
                    file.path      = videoPackage.Path;
                    file.thumbnail = videoPackage.PreviewImagePath;
                }

                _context.SubmitChanges();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemple #6
0
        /// <summary>
        /// Updates awFile
        /// also, if there is a relation between file and awContestEntry, and the
        /// file's original isEnabled=false, and new isEnabled= true, then enabled the awFile record
        /// </summary>
        /// <param name="fileId"></param>
        /// <param name="groupIds"></param>
        /// <param name="title"></param>
        /// <param name="description"></param>
        /// <param name="fileFullPath"></param>
        /// <param name="fileContent"></param>
        /// <param name="isEnabled"></param>
        /// <param name="fileStream"></parparam>
        /// <param name="size"></param>
        public void Update(long fileId, long[] groupIds, string title, string description, string fileFullPath,
                           System.IO.Stream fileStream, bool?isEnabled, string size)
        {
            //GET THE FILE
            fileFullPath = fileFullPath.ToLower();
            awFile fl = _context.awFiles.FirstOrDefault(f => f.fileId.Equals(fileId));

            if (fl == null)
            {
                throw new Exception("File not found in the database.");
            }


            //throw error in case of validation problem
            ValidateToUpdateFile(fl.siteId, fl.userId, groupIds);

            bool   uploadFile        = (fileStream != null && fileStream.Length > 0) ? true : false;
            string resourceFileName  = GetFileNameOnly(fileFullPath);
            string newFilesExtension = GetFileExension(fileFullPath);
            int    contentSize       = uploadFile ? (int)fileStream.Length : 0;
            bool   isVideoFile       = _videoLib.isVideoFile(newFilesExtension);
            string pathToSave        = isVideoFile ?
                                       CreateFilePath(true, fl.siteId, fl.fileId, newFilesExtension) :
                                       CreateFilePath(!FileAmazonS3.SaveOnAmazonS3(), fl.siteId, fileId, newFilesExtension);
            string contentType = GetContentType(AWAPI_BusinessLibrary.library.ConfigurationLibrary.Config.fileMimeXMLPath, newFilesExtension);;

            fl.title       = String.IsNullOrEmpty(title) ? resourceFileName : title;
            fl.description = description;

            if (uploadFile)
            {
                //delete the current file
                DeleteFromStorage(fl.siteId, fl.isOnLocal, fl.path);

                if (!String.IsNullOrEmpty(fl.thumbnail))
                {
                    DeleteFromStorage(fl.siteId, fl.isOnLocal, fl.thumbnail);
                }

                //delete the thumbs
                if (fl.isOnLocal)
                {
                    DeleteThumbs(fl.fileId, fl.path);
                }

                //set the path
                //if video file, first it will saved to the local,
                //then will be saved to the right location (amazon or local) after the conversion
                fl.isOnLocal   = isVideoFile ? true : !FileAmazonS3.SaveOnAmazonS3();
                fl.path        = pathToSave;
                fl.link        = GetUrl(fl.fileId, pathToSave, "");
                fl.thumbnail   = "";
                fl.contentType = contentType;
                fl.contentSize = contentSize;
            }
            fl.lastBuildDate = DateTime.Now;

            //if tehere is a connection with contest,
            bool enableContestEntry = !fl.isEnabled && (isEnabled != null && isEnabled.Value);

            fl.isEnabled = isEnabled == null ? fl.isEnabled : isEnabled.Value;
            _context.SubmitChanges();

            //add file to groups
            if (groupIds != null)
            {
                AddFileToGroups(fileId, groupIds);
            }

            //If new file is uploaded update the new file...
            if (uploadFile)
            {
                if (!isVideoFile)
                {
                    SaveFile(fl.siteId, !FileAmazonS3.SaveOnAmazonS3(), contentType, pathToSave, fileStream, size);
                }
                else
                {
                    //if video, then save on the local first
                    SaveFile(fl.siteId, true, contentType, pathToSave, fileStream, "");
                    IfVideoConvertToFLV(fileId);
                }
            }

            if (enableContestEntry)
            {
                ContestLibrary lib = new ContestLibrary();
                lib.UpdateContestEntriesStatusesByFileId(fileId, true);
            }
        }