public IQueryable <PostImageViewModel> GetAllPostImageViewModels(HttpServerUtilityBase server, HttpRequestBase request, int page, int pageSize)
        {
            try
            {
                var di   = new DirectoryInfo(server.MapPath("/_PostImages"));
                var list = new List <PostImageViewModel>();

                var index = 0;
                var min   = (page - 1) * pageSize;
                var max   = min + pageSize;
                foreach (var file in di.GetFiles())
                {
                    if (index < min)
                    {
                        index++;
                        continue;
                    }

                    var pivm = new PostImageViewModel();

                    pivm.FileName = file.Name;

                    var url = file.FullName.Replace(request.ServerVariables["APPL_PHYSICAL_PATH"], String.Empty).Replace('\\', '/');
                    url      = url.TrimStart('_');
                    pivm.Url = "/" + url;

                    var image = System.Drawing.Image.FromFile(file.FullName);

                    pivm.Width  = image.Width;
                    pivm.Height = image.Height;

                    image.Dispose();

                    list.Add(pivm);

                    index++;

                    if (index >= max)
                    {
                        break;
                    }
                }

                return(list.AsQueryable());
            }
            catch (Exception ex)
            {
                Log.Error(ex.Message, ex);
                return((new List <PostImageViewModel>()).AsQueryable());
            }
        }
예제 #2
0
        public async Task <ActionResult> EditImage(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Post post = await db.Posts.FindAsync(id);

            if (post == null)
            {
                return(HttpNotFound());
            }
            var model = new PostImageViewModel {
                Id = post.Id
            };

            return(View(model));
        }
예제 #3
0
        public async Task <ActionResult> EditImage(PostImageViewModel model)
        {
            if (ModelState.IsValid)
            {
                string fileName = $"{DateTime.Now.Ticks}_{Path.GetFileName(model.ImageFile.FileName)}";
                model.ImageFile.SaveAs(Path.Combine(Server.MapPath("~/Uploads/PostImages"), fileName));

                Post post = await db.Posts.FindAsync(model.Id);

                post.ImagePath = fileName;

                db.Entry(post).State = EntityState.Modified;
                await db.SaveChangesAsync();

                return(RedirectToAction("Edit", new { id = model.Id }));
            }
            return(View(model));
        }
예제 #4
0
 public HttpResponseMessage Create(HttpRequestMessage request, PostImageViewModel postImageVm)
 {
     return(CreateHttpResponse(request, () =>
     {
         if (ModelState.IsValid)
         {
             PostImage postImageDb = new PostImage();
             postImageDb.UpdatePostImage(postImageVm);
             _postImageService.Add(postImageDb);
             _postImageService.SaveChange();
             return request.CreateResponse(HttpStatusCode.OK, postImageVm);
         }
         else
         {
             return request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
         }
     }));
 }
예제 #5
0
 public static void UpdatePostImage(this PostImage postImage, PostImageViewModel postImageVm)
 {
     postImage.Path    = postImageVm.Path;
     postImage.PostId  = postImageVm.PostId;
     postImage.Caption = postImageVm.Caption;
 }