public ActionResult AddPicture([Bind(Exclude = "UserPictures")] AddPictureBindingModel model, int id) { if (this.ModelState.IsValid) { byte[] imageData = null; if (this.Request.Files.Count > 0) { HttpPostedFileBase httpPostedFileBase = this.Request.Files["UserPictures"]; using (var binary = new BinaryReader(httpPostedFileBase.InputStream)) { imageData = binary.ReadBytes(httpPostedFileBase.ContentLength); } } this.service.AddPictureToOrder(imageData, id); return(this.RedirectToAction("ProfilePage", "Users")); } return(this.RedirectToAction("ProfilePage", "Users")); }
public ActionResult UploadPicture(AddPictureBindingModel model) { var contest = this.Data.Contests.Find(model.ContestId); var userId = this.User.Identity.GetUserId(); var user = this.Data.Users.Find(userId); var url = Request.UrlReferrer.AbsolutePath; if (contest.ParticipationStrategy == ParticipationStrategy.Closed) { if (!contest.SelectedUsersForParticipation.Contains(user)) { //this.TempData["partisipation-message"] = "You don't have permission to participate in this contest!"; return this.Json("Not", JsonRequestBehavior.AllowGet); } } if (contest.DeadlineStrategy == DeadlineStrategy.ByNumberOfParticipants) { var pictures = this.Data.Pictures .All() .Where(p => p.ContestId == contest.Id) .Select(p => new { OwnerId = p.OwnerId }) .ToList(); var participantsIds = new HashSet<string>(); foreach (var picture in pictures) { participantsIds.Add(picture.OwnerId); } if (participantsIds.Count >= contest.MaxParticipants && !participantsIds.Contains(userId)) { //this.TempData["partisipation-message"] = "You don't have permission to participate in this contest!"; return this.Json("Max", JsonRequestBehavior.AllowGet); } } if (model.Picture != null && model.Picture.ContentLength > 0) { Guid id = Guid.NewGuid(); string fileName = id.ToString(); string fileExtension = model.Picture.FileName.Split('.').Last(); MemoryStream target = new MemoryStream(); model.Picture.InputStream.CopyTo(target); byte[] data = target.ToArray(); UserCredential credential; using (var filestream = new FileStream(Server.MapPath("~/client_secret.json"), FileMode.Open, FileAccess.Read)) { credential = GoogleWebAuthorizationBroker.AuthorizeAsync( GoogleClientSecrets.Load(filestream).Secrets, new[] { DriveService.Scope.Drive }, "yunay07abv.bg", CancellationToken.None, new FileDataStore(Server.MapPath("~/Contests"))).Result; } // Create the service. var service = new DriveService(new BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = "My Project", }); File body = new File(); body.Title = fileName; body.Shared = true; body.Shareable = true; body.Parents = new List<ParentReference>{ new ParentReference() {Id = "0B3FfQDv4R4vyMkZ0Z2ZkMC0tWjg"} }; body.Description = "Image"; body.MimeType = "image/jpeg"; body.FileExtension = fileExtension; MemoryStream stream = new MemoryStream(data); FilesResource.InsertMediaUpload request = service.Files.Insert(body, stream, "text/plain"); request.Upload(); File file = request.ResponseBody; var newPic = new Picture(); newPic.ContestId = model.ContestId; newPic.PictureUrl = "https://drive.google.com/uc?id=" + file.Id; newPic.VoteCount = 0; newPic.OwnerId = this.User.Identity.GetUserId(); newPic.Description = model.Description; newPic.Title = model.Title; this.Data.Pictures.Add(newPic); this.Data.SaveChanges(); PictureViewModel lastPicture = new PictureViewModel(); lastPicture.CommentsCount = 0; lastPicture.Id = newPic.Id; lastPicture.PictureUrl = "https://drive.google.com/uc?id=" + file.Id; lastPicture.Comments = new List<CommentViewModel>(); lastPicture.Owner = this.UserProfile.UserName; lastPicture.Title = model.Title; lastPicture.Description = model.Description; return PartialView("~/Views/Pictures/_ShowPicture.cshtml", lastPicture); } return View("/"); }