public ActionResult AddMediaItem(int id, FormCollection collection) { var user = new UserManager().GetUser((int)Session["UserID"]); var htmlInputProvider = new OCM.API.InputProviders.HTMLFormInputProvider(); if (user != null) { var mediaItem = new MediaItem(); bool uploaded = htmlInputProvider.ProcessMediaItemSubmission(this.HttpContext.ApplicationInstance.Context, ref mediaItem, user.ID); ViewBag.PoiId = id; ViewBag.UploadCompleted = true; return View(); } return View(); }
/// <summary> /// Handle input to API /// </summary> /// <param name="context"></param> private void PerformInput(HttpContext context) { OCM.API.InputProviders.IInputProvider inputProvider = null; bool performSubmissionCompletedRedirects = false; if (context.Request["format"] == "json") { inputProvider = new InputProviders.JSONInputProvider(); } else { inputProvider = new InputProviders.HTMLFormInputProvider(); performSubmissionCompletedRedirects = true; } SubmissionManager submissionManager = new SubmissionManager(); //attempt to determine user from api call User user = inputProvider.GetUserFromAPICall(context); if (user != null && user.IsCurrentSessionTokenValid == false) { //session token provided didn't match latest in user details, reject user details. context.Response.StatusCode = 401; } else { //gather input variables if (context.Request["action"] == "cp_submission") { //gather/process data for submission OCM.API.Common.Model.ChargePoint cp = new Common.Model.ChargePoint(); bool processedOK = inputProvider.ProcessEquipmentSubmission(context, ref cp); bool submittedOK = false; if (processedOK == true) { //perform submission int submissionId = submissionManager.PerformPOISubmission(cp, user); if (submissionId > -1) submittedOK = true; } if (processedOK && submittedOK) { if (performSubmissionCompletedRedirects) { if (submittedOK) { context.Response.Redirect("http://openchargemap.org/submissions/complete.aspx", true); } else { context.Response.Redirect("http://openchargemap.org/submissions/error.aspx", true); } } else { context.Response.StatusCode = 202; //context.Response.AddHeader("Access-Control-Allow-Origin", "*"); } } else { if (performSubmissionCompletedRedirects) { context.Response.Redirect("http://openchargemap.org/submissions/error.aspx", true); } else { context.Response.StatusCode = 500; //context.Response.AddHeader("Access-Control-Allow-Origin", "*"); } } } if (context.Request["action"] == "comment_submission") { UserComment comment = new UserComment(); bool processedOK = inputProvider.ProcessUserCommentSubmission(context, ref comment); if (processedOK == true) { //perform submission int result = submissionManager.PerformSubmission(comment, user); if (result >= 0) { context.Response.Write("OK:" + result); } else { context.Response.Write("Error:" + result); } } else { context.Response.Write("Error: Validation Failed"); } } if (context.Request["action"] == "contactus_submission") { ContactSubmission contactSubmission = new ContactSubmission(); bool processedOK = inputProvider.ProcessContactUsSubmission(context, ref contactSubmission); bool resultOK = submissionManager.SendContactUsMessage(contactSubmission.Name, contactSubmission.Email, contactSubmission.Comment); if (resultOK == true) { context.Response.Write("OK"); } else { context.Response.Write("Error"); } } if (context.Request["action"] == "mediaitem_submission") { var p = inputProvider as OCM.API.InputProviders.HTMLFormInputProvider; MediaItem m = new MediaItem(); bool accepted = false; string msg = ""; try { accepted = p.ProcessMediaItemSubmission(context, ref m, user.ID); } catch (Exception exp) { msg += exp.ToString(); } if (accepted) { submissionManager.PerformSubmission(m, user); //OutputSubmissionReceivedMessage(context, "OK :" + m.ID, true); context.Response.Write("OK"); } else { //OutputBadRequestMessage(context, "Error, could not accept submission: " + msg); context.Response.Write("Error"); } } } }
public bool ProcessMediaItemSubmission(HttpContext context, ref MediaItem mediaItem, int userId) { try { var files = context.Request.Files; string filePrefix = DateTime.UtcNow.Millisecond.ToString() + "_"; int chargePointId = int.Parse(context.Request["id"]); string comment = context.Request["comment"]; var tempFiles = new List<string>(); string tempFolder = context.Server.MapPath("~/temp/uploads/"); foreach (string file in context.Request.Files) { var postedFile = context.Request.Files[file]; if (postedFile != null && postedFile.ContentLength > 0) { string tmpFile = tempFolder + filePrefix + postedFile.FileName; postedFile.SaveAs(tmpFile); tempFiles.Add(tmpFile); } } var task = Task.Factory.StartNew(() => { var mediaManager = new MediaItemManager(); foreach (var tmpFile in tempFiles) { var photoAdded = mediaManager.AddPOIMediaItem(tempFolder, tmpFile, chargePointId, comment, false, userId); } }, TaskCreationOptions.LongRunning); return true; } catch { return false; } }