private bool SavePictureToCache(CoursePictureModel picture) { bool result = false; try { string directory = GetCompanyCacheDirectory(picture.CompanyID); if (!Directory.Exists(directory)) { Directory.CreateDirectory(directory); } // save big picture string filePath = GetCacheFilePath(picture.CompanyID, picture.CourseID); SaveFile(filePath, picture.Picture); // save thumbnail picture string thumbnailPath = GetCacheThumbnailPath(picture.CompanyID, picture.CourseID); ResizeAndSaveFile(thumbnailPath, ThumbnailPictureWidthOrHeight, picture.Picture); result = true; } catch (Exception e) { this.eventLog.LogWarning(e); } return(result); }
public void UpdateCoursePicture(CoursePictureModel picture) { using (var dataContext = this.dataContextFactory.Create()) { dataContext.p_UpsertCoursePicture(picture.CompanyID, picture.CourseID, ReadToEnd(picture.Picture)); } }
private CoursePictureModel GetThumbnailFromCache(int companyID, int courseID) { CoursePictureModel result = null; string filePath = GetCacheThumbnailPath(companyID, courseID); try { if (!File.Exists(filePath)) { return(null); } using (var fileStream = File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { var destination = new MemoryStream(); fileStream.CopyTo(destination); result = new CoursePictureModel { CompanyID = companyID, CourseID = courseID, Picture = destination }; } } catch (Exception e) { this.eventLog.LogWarning(e); } return(result); }
public void UpdateCoursePicture(string tempPictureName, int companyID, int courseID) { string tempPath = GetTempPicturePath(tempPictureName); Stream tempPicture = GetPictureFromTemp(tempPath); if (tempPicture == null) { throw new FileNotFoundException(); } var model = new CoursePictureModel { CompanyID = companyID, CourseID = courseID, Picture = tempPicture }; imageStorage.UpdateCoursePicture(model); object locker = GetOrAddConcurrentKey(companyID, courseID); lock (locker) { SavePictureToCache(model); } DeletePictureFromTemp(tempPath); }
public CoursePictureModel GetTempPicture(string tempImageName) { CoursePictureModel result = null; string tempPath = GetTempPicturePath(tempImageName); Stream image = GetPictureFromTemp(tempPath); if (image != null) { result = new CoursePictureModel { Picture = image }; } return(result); }
public CoursePictureModel GetCoursePicture(int companyID, int courseID) { CoursePictureModel result = null; using (var dataContext = this.dataContextFactory.Create()) { var picture = dataContext.p_GetCoursePicture(companyID, courseID).FirstOrDefault(); if (picture != null) { result = new CoursePictureModel() { Picture = picture.Picture != null ? new MemoryStream(picture.Picture) : null, CompanyID = picture.CompanyID, CourseID = picture.ID }; } } return(result); }
public HttpResponseMessage GetImage([FromUri] CoursePictureQuery query) { CoursePictureModel pictureModel = null; var response = new HttpResponseMessage(); try { if (!string.IsNullOrEmpty(query.TempName)) { pictureModel = imageService.GetTempPicture(query.TempName); } else if (query.CompanyID > 0 && query.CourseID > 0) { pictureModel = imageService.GetPicture(query.CompanyID, query.CourseID); } } catch (CourseNotFoundException ex) { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound)); } Stream outputStream = null; if (pictureModel != null && pictureModel.Picture != null && pictureModel.Picture.Length > 0) { outputStream = pictureModel.Picture; } else { string path = System.Web.HttpContext.Current.Server.MapPath(@"~/images/empty-course.png"); outputStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); } outputStream.Position = 0; response.Content = new StreamContent(outputStream); response.Content.Headers.ContentType = new MediaTypeHeaderValue("image/png"); return(response); }