// PUT api/values/5 public HttpResponseMessage Put(int id, [FromBody] Models.UserCondition updated) { updated.Id = id; ServiceData.Models.UserCondition found = _conditionRepository.GetById(id); if (found == null) { return(Request.CreateResponse(HttpStatusCode.NotFound)); } if (found.Owner.Email != User.Identity.Name) { return(Request.CreateResponse(HttpStatusCode.Forbidden)); } ServiceData.Models.UserCondition final = _conditionRepository.Update(Models.UserCondition.ToServiceModel(updated, false)); if (final == null) { return(Request.CreateResponse(HttpStatusCode.NotFound)); } ServerUtils.LogTelemetryEvent(User.Identity.Name, "UpdateCondition"); PostLog("UserConditions_Update", found.Owner.Id); return(Request.CreateResponse(HttpStatusCode.OK, Models.UserCondition.ToAppModel(final, true))); }
public HttpResponseMessage Get(int id) { ServiceData.Models.UserCondition found = _conditionRepository.GetById(id); if (found == null) { return(Request.CreateResponse(HttpStatusCode.NotFound)); } if (found.Owner.Email != User.Identity.Name) { return(Request.CreateResponse(HttpStatusCode.Forbidden)); } if (found.Photos.Count() > 0) { found.Photos = found.Photos.OrderByDescending(photo => photo.CreatedAt); } Models.UserCondition toRet = Models.UserCondition.ToAppModel(found, false); ServerUtils.LogTelemetryEvent(User.Identity.Name, "GetCondition"); PostLog("UserConditions_GetSingle", found.Owner.Id); return(Request.CreateResponse(HttpStatusCode.OK, toRet)); }
// POST api/values public HttpResponseMessage Post([FromBody] Models.UserCondition newCondition) { try { newCondition.Owner = Models.User.ToAppModel(_userRepository.Search(u => u.Email == User.Identity.Name).FirstOrDefault()); ServiceData.Models.UserCondition returned = _conditionRepository.Insert(Models.UserCondition.ToServiceModel(newCondition, true)); ServerUtils.LogTelemetryEvent(User.Identity.Name, "AddCondition"); PostLog("UserConditions_Create", newCondition.Owner.Id); return(Request.CreateResponse(HttpStatusCode.OK, Models.UserCondition.ToAppModel(returned, false))); } catch (Exception e) { return(Request.CreateResponse(HttpStatusCode.InternalServerError, e)); } }
// GET: Conditions public async Task <ActionResult> Index(int id) { await LoadViewBag(); IReadWriteRepository <ServiceData.Models.UserCondition> _condRepository = new UserConditionsRepository(); ServiceData.Models.UserCondition found = _condRepository.GetById(id); if (found == null) { return(new HttpNotFoundResult()); } IReadWriteRepository <ServiceData.Models.Share> _shareRepository = new ShareRepository(); ServiceData.Models.Share sh = _shareRepository.Search(s => s.UserCondition.Id == id && s.SharedEmail == User.Identity.Name && s.ExpireDate > DateTime.UtcNow).FirstOrDefault(); if (found.Owner.Email != User.Identity.Name && sh == null) { return(new HttpUnauthorizedResult()); } // Has been shared with the user (potentially themself but meh) if (sh != null) { sh.Updated = false; _shareRepository.Update(sh); ViewData["Title"] = string.Format("{0}'s {1}", found.Owner.Name, found.Condition); } else { ViewData["Title"] = found.Condition; } Models.UserCondition cond = Models.UserCondition.ToAppModel(found, true); ViewData["Condition"] = cond; return(View(cond.Photos)); }