// 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));
            }
        }
Exemplo n.º 4
0
        // 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));
        }