コード例 #1
0
ファイル: FileService.cs プロジェクト: blake8872000/Wiico
        public FileStorageViewModel UploadFile(int memberId, string fileName, string contentType, int size, int?fileImageHeight = null, int?fileImageWidth = null)
        {
            var fileInfo     = new FileStorageViewModel();
            var fileGuidName = Guid.NewGuid();

            var fileEntity = new Infrastructure.Entity.FileStorage()
            {
                Name = HttpUtility.UrlDecode(fileName),
                //  Name =file.FileName,
                FileGuid        = fileGuidName,
                FileSize        = size,
                FileContentType = contentType,
                Creator         = memberId,
                CreateUtcDate   = DateTime.UtcNow,
                FileUrl         = string.Format("{0}api/file/{1}", loginServer, fileGuidName.ToString("N"))
            };

            if (contentType.Contains("image"))
            {
                fileEntity.FileImageHeight = fileImageHeight;
                fileEntity.FileImageWidth  = fileImageWidth;
            }
            // Db File
            fileInfo = Create(fileEntity);
            _uow.SaveChanges();
            return(fileInfo);
        }
コード例 #2
0
ファイル: FileService.cs プロジェクト: blake8872000/Wiico
        /// <summary>
        /// 新增資訊
        /// </summary>
        /// <param name="fileEntity">檔案實體</param>
        /// <returns></returns>
        private FileStorageViewModel Create(FileStorage fileEntity)
        {
            var db = _uow.DbContext;

            if (GetFileInfoByFileGuidName(fileEntity.FileGuid) == null)
            {
                db.FileStorage.Add(fileEntity);
                var respponseData = new FileStorageViewModel()
                {
                    CreateUtcDate   = fileEntity.CreateUtcDate,
                    Creator         = fileEntity.Creator,
                    FileContentType = fileEntity.FileContentType,
                    Deleter         = fileEntity.Deleter,
                    DeleteUtcDate   = fileEntity.DeleteUtcDate,
                    FileGuid        = fileEntity.FileGuid,
                    FileImageHeight = fileEntity.FileImageHeight,
                    FileImageUrl    = fileEntity.FileContentType.ToLower().Contains("image") ?
                                      string.Format("{0}api/imgFile/{1}/{2}/{3}", loginServer, fileEntity.FileGuid.ToString("N"), maxImgWidth, maxImgHeight) :
                                      null,
                    FileImageWidth = fileEntity.FileImageWidth,
                    FileSize       = fileEntity.FileSize,
                    FileUrl        = fileEntity.FileUrl,
                    Name           = fileEntity.Name
                };

                return(respponseData);
            }
            else
            {
                return(null);
            }
        }
コード例 #3
0
        public IActionResult Post(string folderName, string parentfolderName, string filePath)
        {
            try
            {
                //DirectoryInfo di = Directory.CreateDirectory(@"filePath");

                var model = new FileStorageViewModel()
                {
                    FolderName = folderName, ParentFolderName = parentfolderName, FilePath = filePath, FileCreationDate = DateTime.UtcNow
                };
                if (model != null)
                {
                    var newFolder = _mapper.Map <FileStorageViewModel, FileStoreage>(model);

                    var outPut = _fileStorageRepository.Create(newFolder).Result;

                    return(Created($"/api/Folder/{outPut.Id}", _mapper.Map <FileStoreage, FileStorageViewModel>(outPut)));
                }
            }
            catch (Exception ex)
            {
                _logger.LogError($"Failed to create a new Folder: {ex}");
            }

            return(BadRequest("Failed to create a new Folder"));
        }
コード例 #4
0
        public HttpResponseMessage Upload(int id)
        {
            // GRABBING THE FILE FROM THE HTTP REQUEST & ASSIGNING GUID TO SERVERFILENAME
            var httpRequest = HttpContext.Current.Request;

            if (httpRequest.Files.Count > 0)
            {
                try
                {
                    var postedFile     = httpRequest.Files[0];
                    var postedFileName = postedFile.FileName;
                    var serverFileName = Path.GetFileNameWithoutExtension(postedFileName) + "." + Guid.NewGuid() + Path.GetExtension(postedFileName);

                    // AWS Upload
                    TransferUtilityUploadRequest request = new TransferUtilityUploadRequest
                    {
                        BucketName  = awsBucketName,
                        Key         = serverFileName,
                        InputStream = postedFile.InputStream
                    };
                    fileTransferUtility.Upload(request);

                    // CREATING MODEL TO SEND TO SERVICE TO SAVE FILE DATA TO SQL
                    FileStorageAddRequest newFile = new FileStorageAddRequest
                    {
                        UserFileName   = postedFileName,
                        BasePath       = "C64/goodneighbor/",
                        SystemFileName = serverFileName,
                        IncidentId     = id,
                        ModifiedBy     = "Your Neighbor"
                    };
                    int newFileId = _fileStorageService.Create(newFile);
                    FileStorageViewModel newFileUpload = _fileStorageService.SelectById(newFileId);

                    ItemResponse <FileStorageViewModel> resp = new ItemResponse <FileStorageViewModel>();
                    resp.Item = newFileUpload;
                    return(Request.CreateResponse(HttpStatusCode.Created, resp));
                }
                catch (Exception ex)
                {
                    return(Request.CreateResponse(HttpStatusCode.BadRequest, ex));
                }
            }
            else
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Upload Failed - Check the file being uploaded."));
            }
        }
コード例 #5
0
ファイル: FileService.cs プロジェクト: blake8872000/Wiico
        /// <summary>
        /// 取得特定的FileStorage資料
        /// </summary>
        /// <param name="fileGuid"></param>
        /// <returns></returns>
        public FileStorageViewModel GetFileInfoByFileGuidName(Guid fileGuid)
        {
            var db = _uow.DbContext;

            var fileInfo = (from fs in db.FileStorage
                            where fs.FileGuid == fileGuid
                            select fs).FirstOrDefault();

            if (fileInfo != null)
            {
                var imgFile_g    = fileGuid.ToString("N");
                var responseData = new FileStorageViewModel()
                {
                    CreateUtcDate   = fileInfo.CreateUtcDate,
                    Creator         = fileInfo.Creator,
                    FileContentType = fileInfo.FileContentType,
                    Deleter         = fileInfo.Deleter,
                    DeleteUtcDate   = fileInfo.DeleteUtcDate,
                    FileGuid        = fileInfo.FileGuid,
                    FileImageHeight = fileInfo.FileImageHeight,
                    FileImageUrl    = fileInfo.FileContentType.ToLower().Contains("image") ?
                                      string.Format("{0}api/imgFile/{1}/{2}/{3}", loginServer, fileInfo.FileGuid.ToString("N"), maxImgWidth, maxImgHeight) :
                                      null,
                    FileImageWidth = fileInfo.FileImageWidth,
                    FileSize       = fileInfo.FileSize,
                    FileUrl        = fileInfo.FileUrl,
                    Name           = fileInfo.Name
                };

                responseData.FileImageUrl = fileInfo.FileContentType.ToLower().Contains("image") ? string.Format("{0}api/imgFile/{1}", loginServer, imgFile_g, maxImgWidth, maxImgHeight) : null;
                return(responseData);
            }

            else
            {
                return(null);
            }
        }
コード例 #6
0
        public FileStorageViewModel SelectById(int Id)
        {
            FileStorageDomain rawData = new FileStorageDomain();

            _dataProvider.ExecuteCmd(
                "file_storage_select_by_id",
                inputParamMapper : delegate(SqlParameterCollection paramCol)
            {
                paramCol.AddWithValue("@Id", Id);
            },
                singleRecordMapper : delegate(IDataReader reader, short set)
            {
                int idx                = 0;
                rawData.Id             = reader.GetSafeInt32(idx++);
                rawData.UserFileName   = reader.GetSafeString(idx++);
                rawData.BasePath       = reader.GetSafeString(idx++);
                rawData.SystemFileName = reader.GetSafeString(idx++);
                rawData.IncidentId     = reader.GetSafeInt32(idx++);
                rawData.CreatedDate    = reader.GetSafeDateTime(idx++);
                rawData.ModifiedDate   = reader.GetSafeDateTime(idx++);
                rawData.ModifiedBy     = reader.GetSafeString(idx++);
            }
                );

            FileStorageViewModel viewModelResp = new FileStorageViewModel
            {
                Id           = rawData.Id,
                UserFileName = rawData.UserFileName,
                Url          = "https://sabio-training.s3.us-west-2.amazonaws.com/" + rawData.BasePath + rawData.SystemFileName,
                IncidentId   = rawData.IncidentId,
                ModifiedDate = rawData.ModifiedDate,
                ModifiedBy   = rawData.ModifiedBy
            };


            return(viewModelResp);
        }
コード例 #7
0
ファイル: FileService.cs プロジェクト: blake8872000/Wiico
        /// <summary>
        /// 上傳檔案
        /// </summary>
        /// <param name="memberId"></param>
        /// <param name="files"></param>
        /// <returns></returns>
        public List <FileStorageViewModel> UploadFile(int memberId, HttpFileCollection files)
        {
            var fileList = new List <FileStorageViewModel>();

            //預設存檔位置
            var drivePath = WebConfigurationManager.AppSettings["DrivePath"];
            //存檔server
            var fileServer = WebConfigurationManager.AppSettings["loginServer"];

            //確認實體檔案資料夾是否存在
            if (!Directory.Exists(drivePath))
            {
                //建一個新的資料夾
                Directory.CreateDirectory(drivePath);
            }


            //開始上傳檔案
            for (int i = 0; i < files.Count; i++)
            {
                var            fileInfo = new FileStorageViewModel();
                HttpPostedFile file     = files[i];

                int?fileImageWidth  = null;
                int?fileImageHeight = null;
                var fileGuidName    = Guid.NewGuid();
                var resourcePath    = Path.Combine(drivePath, fileGuidName.ToString("N"));

                // Physical File
                file.SaveAs(resourcePath);
                var fileEntity = new Infrastructure.Entity.FileStorage()
                {
                    Name            = HttpUtility.UrlDecode(file.FileName),
                    FileGuid        = fileGuidName,
                    FileSize        = file.ContentLength, //Byte
                    FileContentType = file.ContentType,
                    Creator         = memberId,
                    CreateUtcDate   = DateTime.UtcNow,
                    FileUrl         = string.Format("{0}api/file/{1}", fileServer, fileGuidName.ToString("N")),
                    // FileImageUrl = string.Format("{0}api/imgFile/{1}/{2}/{3}", fileServer, fileGuidName.ToString("N"), maxImgWidth, maxImgHeight),
                    FileImageHeight = fileImageHeight,
                    FileImageWidth  = fileImageWidth
                };
                if (file.ContentType.Contains("image"))
                {
                    var imgPath = Path.Combine(drivePath, string.Format("{0}_w{1}_h{2}", fileGuidName.ToString("N"), maxImgWidth, maxImgHeight));

                    System.Drawing.Image image = System.Drawing.Image.FromStream(file.InputStream);

                    //實體圖片寬高
                    fileImageWidth  = image.Width;
                    fileImageHeight = image.Width;
                    //建立一個縮圖
                    ImageResize(resourcePath, maxImgWidth, maxImgHeight, imgPath, file.ContentType);
                }



                // Db File
                fileInfo = Create(fileEntity);
                fileList.Add(fileInfo);
            }
            var db = _uow.DbContext;

            db.SaveChanges();
            return(fileList);
        }
コード例 #8
0
ファイル: FileService.cs プロジェクト: blake8872000/Wiico
        /// <summary>
        /// 透過mutipart Form Data傳檔案進來
        /// </summary>
        /// <param name="memberId"></param>
        /// <param name="files"></param>
        /// <returns></returns>
        public List <FileStorageViewModel> UploadFiles(int memberId, List <FileStorage> files, Stream[] physicalStreams)
        {
            var fileList = new List <FileStorageViewModel>();

            //預設存檔位置
            var drivePath = WebConfigurationManager.AppSettings["DrivePath"];
            //存檔server
            var fileServer = WebConfigurationManager.AppSettings["loginServer"];
            //確認實體檔案資料夾是否存在

            /*      if (!Directory.Exists(drivePath))
             *        //建一個新的資料夾
             *        Directory.CreateDirectory(drivePath);*/
            var streamIndex = 0;

            foreach (var file in files)
            {
                var fileStream       = physicalStreams[streamIndex];
                var responseFileData = new FileStorageViewModel();
                int?fileImageWidth   = null;
                int?fileImageHeight  = null;
                //  var fileGuidName = Guid.NewGuid();
                var resourcePath = Path.Combine(drivePath, file.FileGuid.ToString("N"));

                if (file.FileContentType.Contains("image"))
                {
                    var imgPath = Path.Combine(drivePath, string.Format("{0}_w{1}_h{2}", file.FileGuid.ToString("N"), maxImgWidth, maxImgHeight));
                    var image   = Image.FromStream(fileStream);

                    //實體圖片寬高
                    fileImageWidth  = image.Width;
                    fileImageHeight = image.Width;
                    //建立一個縮圖
                    ImageResize(resourcePath, maxImgWidth, maxImgHeight, imgPath, file.FileContentType);
                    responseFileData.FileImageUrl    = string.Format("{0}api/imgFile/{1}/{2}/{3}", fileServer, file.FileGuid.ToString("N"), maxImgWidth, maxImgHeight);
                    responseFileData.FileImageHeight = fileImageHeight;
                    responseFileData.FileImageWidth  = fileImageWidth;
                    file.FileImageHeight             = fileImageHeight;
                    file.FileImageWidth = fileImageWidth;
                }
                file.Name = HttpUtility.UrlDecode(file.Name);
                // file.FileGuid = fileGuidName;
                file.Creator       = memberId;
                file.CreateUtcDate = DateTime.UtcNow;
                file.FileUrl       = string.Format("{0}api/file/{1}", fileServer, file.FileGuid.ToString("N"));

                responseFileData.FileGuid        = file.FileGuid;
                responseFileData.Creator         = memberId;
                responseFileData.FileUrl         = string.Format("{0}api/file/{1}", fileServer, file.FileGuid.ToString("N"));
                responseFileData.CreateUtcDate   = DateTime.UtcNow;
                responseFileData.Name            = HttpUtility.UrlDecode(file.Name);
                responseFileData.Size            = file.FileSize;
                responseFileData.FileSize        = file.FileSize;
                responseFileData.FileType        = file.FileContentType;
                responseFileData.FileContentType = file.FileContentType;
                fileList.Add(responseFileData);
                fileStream.Close();
                streamIndex++;
            }
            var db = _uow.DbContext;

            db.FileStorage.AddRange(files);
            db.SaveChanges();
            fileList = (from fl in fileList
                        join f in files on fl.FileGuid equals f.FileGuid
                        select new FileStorageViewModel {
                Id = f.Id,
                CreateUtcDate = fl.CreateUtcDate,
                Creator = fl.Creator,
                Deleter = fl.Deleter,
                DeleteUtcDate = fl.DeleteUtcDate,
                FileContentType = fl.FileContentType,
                DownLoadUrl = fl.DownLoadUrl,
                FileGuid = fl.FileGuid,
                FileImageHeight = fl.FileImageHeight,
                FileImageUrl = fl.FileImageUrl,
                FileImageWidth = fl.FileImageWidth,
                FileSize = fl.FileSize,
                FileType = fl.FileType,
                FileUrl = fl.FileUrl,
                ImgUrl = fl.ImgUrl,
                Name = fl.Name,
                Size = fl.Size,
                WebViewUrl = fl.WebViewUrl
            }).ToList();
            return(fileList);
        }
コード例 #9
0
ファイル: LeaveService.cs プロジェクト: blake8872000/Wiico
        /// <summary>
        /// 取得單一請假單詳細資訊 - for app
        /// </summary>
        /// <param name="sqlLeave"></param>
        /// <param name="isManage"></param>
        /// <returns></returns>
        private Infrastructure.ViewModel.ActivityFunction.Leave.GetAbSenceFormDetailResponse GetAPPDetailLeaveSqlQuery(AttendanceLeave sqlLeave, bool isManage)
        {
            var db         = _uow.DbContext;
            var resLeaveVM = new Infrastructure.ViewModel.ActivityFunction.Leave.GetAbSenceFormDetailResponse();

            resLeaveVM.FileList = new List <FileStorageViewModel>();

            //取得請假資訊
            resLeaveVM.Comment    = sqlLeave.Comment;
            resLeaveVM.CreateDate = sqlLeave.CreateDate.ToLocalTime();
            resLeaveVM.Content    = sqlLeave.Content;
            resLeaveVM.LeaveDate  = sqlLeave.LeaveDate.ToLocalTime();
            resLeaveVM.Subject    = sqlLeave.Subject;
            //取得狀態名稱
            // resLeaveVM.StatusName = Utility.ParaCondition.LeaveState.Status[sqlLeave.Status];
            //申請人資訊
            var applicationMemberInfo = db.Members.Find(sqlLeave.StudId);

            //請假單申請人照片
            resLeaveVM.MemberImg = applicationMemberInfo.Photo;
            //請假單申請人姓名
            resLeaveVM.MemberAccount = applicationMemberInfo.Account;
            //請假單申請人帳號
            resLeaveVM.MemberName = applicationMemberInfo.Name;
            var learningCircleInfo = db.LearningCircle.Find(sqlLeave.LearningId);

            //所屬課程名稱
            resLeaveVM.CourseName = learningCircleInfo.Name;
            //編碼eventId
            resLeaveVM.OuterKey = Utility.OuterKeyHelper.GuidToPageToken(sqlLeave.EventId);

            var timeTableData = db.TimeTable.FirstOrDefault(t => t.Course_No == learningCircleInfo.LearningOuterKey && t.StartDate >= sqlLeave.LeaveDate);

            if (timeTableData == null || (timeTableData.StartDate.Value.DayOfWeek != sqlLeave.LeaveDate.DayOfWeek))
            {
                timeTableData = null;
            }

            //上課地點與時間
            resLeaveVM.Rooms = new List <Infrastructure.ViewModel.ActivityFunction.Leave.ClassRoomInfo>();
            var sectionDateTimeDataService = new Utility.DateTimeTools();
            var dayofweekService           = new DayOfWeekTools();

            if (timeTableData != null)
            {
                var weekstring    = dayofweekService.ChangeToCht(sqlLeave.LeaveDate.DayOfWeek);
                var weekTableData = db.WeekTable.FirstOrDefault(t => t.LearningCircleId == sqlLeave.LearningId && t.Week == weekstring);
                if (weekTableData != null)
                {
                    for (var i = weekTableData.StartPeriod.Value; i <= weekTableData.EndPeriod.Value; i++)
                    {
                        var data = new Infrastructure.ViewModel.ActivityFunction.Leave.ClassRoomInfo()
                        {
                            classStart    = sectionDateTimeDataService.ProxyDateTime(timeTableData.StartDate.Value.Date, i, true),
                            ClassEnd      = sectionDateTimeDataService.ProxyDateTime(timeTableData.StartDate.Value.Date, i, false),
                            RoomId        = timeTableData.ClassRoomId,
                            RoomName      = timeTableData.ClassRoom,
                            NameOfWeekDay = weekstring
                        };
                        resLeaveVM.Rooms.Add(data);
                    }
                }
            }
            resLeaveVM.Status = sqlLeave.Status;

            /* //設定狀態
             * switch (sqlLeave.Status)
             * {
             *   case "00":
             *       resLeaveVM.Status = enumAbsenceFormStatus.Invalid;
             *       break;
             *   case "10":
             *       resLeaveVM.Status = enumAbsenceFormStatus.Pass;
             *       break;
             *   case "20":
             *       resLeaveVM.Status = enumAbsenceFormStatus.Wait;
             *       break;
             *   case "30":
             *       resLeaveVM.Status = enumAbsenceFormStatus.Recall;
             *       break;
             *   case "40":
             *       resLeaveVM.Status = enumAbsenceFormStatus.Reject;
             *       break;
             *   default:
             *       break;
             * }*/
            if (sqlLeave.LeaveType.HasValue)
            {
                //設定假單類型
                switch (sqlLeave.LeaveType.Value)
                {
                case 1:
                    resLeaveVM.LeaveType = enumLeaveType.SickLeave;
                    break;

                case 2:
                    resLeaveVM.LeaveType = enumLeaveType.PersonalLeave;
                    break;

                case 3:
                    resLeaveVM.LeaveType = enumLeaveType.LeaveForStatutory;
                    break;

                case 4:
                    resLeaveVM.LeaveType = enumLeaveType.Other;
                    break;

                default:
                    break;
                }
            }

            //取得請假單檔案資訊
            var sqlFile = db.LeaveFile.Where(t => t.LeaveId == sqlLeave.Id);

            foreach (var _file in sqlFile)
            {
                var _fileEntity = new FileStorageViewModel();
                var googleFile  = db.FileStorage.Find(_file.GoogleId);
                //if (googleFile == null)
                //    _fileEntity = db.GoogleFile.Find(_file.GoogleId);
                //else
                //{
                //萬一與googleFileId一樣,判斷假單建立日期與檔案建立日期是否一致
                //var checkCreateDate = googleFile.CreateUtcDate.Date;
                //if (checkCreateDate == sqlLeave.CreateDate.Date)
                //{
                //    _fileEntity = new FileViewModel()
                //    {
                //        Create_User = googleFile.Creator,
                //        Create_Utc = googleFile.CreateUtcDate.ToLocalTime(),
                //        DownLoadUrl = googleFile.FileUrl,
                //        FileId = googleFile.FileGuid.ToString("N"),
                //        FileType = googleFile.FileContentType,
                //        Id = googleFile.Id,
                //        Name = googleFile.Name,
                //        Size = googleFile.FileSize,
                //        WebViewUrl = googleFile.FileUrl
                //    };
                //    if (googleFile.FileContentType.ToString().StartsWith("image"))
                //        _fileEntity.ImgUrl = string.Format("{0}api/imgFile/{1}/{2}/{3}", loginServer, googleFile.FileGuid.ToString("N"), maxImgWidth, maxImgHeight);
                //}
                //else
                //    _fileEntity = db.GoogleFile.Find(_file.GoogleId);
                //}

                if (googleFile.FileContentType.ToString().StartsWith("image"))
                {
                    _fileEntity.FileImageUrl = string.Format("{0}api/imgFile/{1}/{2}/{3}", loginServer, googleFile.FileGuid.ToString("N"), maxImgWidth, maxImgHeight);
                    _fileEntity.ImgUrl       = string.Format("{0}api/imgFile/{1}/{2}/{3}", loginServer, googleFile.FileGuid.ToString("N"), maxImgWidth, maxImgHeight);
                }
                _fileEntity.WebViewUrl  = _fileEntity.FileUrl;
                _fileEntity.DownLoadUrl = _fileEntity.FileUrl;
                _fileEntity.Size        = _fileEntity.FileSize;
                _fileEntity.FileType    = _fileEntity.FileContentType;
                if (_fileEntity != null)
                {
                    resLeaveVM.FileList.Add(_fileEntity);
                }
            }
            resLeaveVM.IsManager = isManage;


            return(resLeaveVM);
        }