Exemplo n.º 1
0
        public HttpResponseMessage Patch(DateTime diaryid, int id, [FromBody] DiaryEntryModel model)
        {
            try
            {
                var entity = TheRepo.GetDiaryEntry(_identityService.CurrentUser, diaryid, id);
                if (entity == null)
                {
                    return(Request.CreateResponse(HttpStatusCode.NotFound));
                }

                var parsedValue = TheModelFactory.Parse(model);
                if (parsedValue == null)
                {
                    return(Request.CreateResponse(HttpStatusCode.NotFound));
                }

                if (entity.Quantity != parsedValue.Quantity)
                {
                    entity.Quantity = parsedValue.Quantity;
                    if (TheRepo.SaveAll())
                    {
                        return(Request.CreateResponse(HttpStatusCode.OK));
                    }
                }

                return(Request.CreateResponse(HttpStatusCode.BadRequest));
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }
        }
Exemplo n.º 2
0
        public IEnumerable <MeasureModel> Get(int foodid)
        {
            var results = TheRepo.GetMeasuresForFood(foodid)
                          .ToList()
                          .Select(m => TheModelFactory.Create(m));

            return(results);
        }
Exemplo n.º 3
0
        public IEnumerable <DiaryEntryModel> Get(DateTime diaryid)
        {
            var results = TheRepo.GetDiaryEntries(_identityService.CurrentUser, diaryid.Date)
                          .ToList()
                          .Select(e => TheModelFactory.Create(e));

            return(results);
        }
Exemplo n.º 4
0
        public MeasureModel Get(int foodid, int id)
        {
            var results = TheRepo.GetMeasure(id);

            if (results.Food.Id == foodid)
            {
                return(TheModelFactory.Create(results));
            }
            return(null);
        }
Exemplo n.º 5
0
        public HttpResponseMessage Get(DateTime diaryid, int id)
        {
            var result = TheRepo.GetDiaryEntry(_identityService.CurrentUser, diaryid.Date, id);

            if (result == null)
            {
                return(Request.CreateResponse(HttpStatusCode.NotFound));
            }
            return(Request.CreateResponse(HttpStatusCode.OK, TheModelFactory.Create(result)));
        }
Exemplo n.º 6
0
        public IHttpActionResult Get()
        {
            var results = new
            {
                NumFoods = TheRepo.GetAllFoods().Count(),
                NumUsers = TheRepo.GetApiUsers().Count()
            };

            return(Ok(results));
        }
Exemplo n.º 7
0
        public IEnumerable <DiaryModel> Get()
        {
            var username = _identityService.CurrentUser;
            var results  = TheRepo.GetDiaries(username)
                           .OrderByDescending(d => d.CurrentDate)
                           .Take(10)
                           .ToList()
                           .Select(d => TheModelFactory.Create(d));

            return(results);
        }
Exemplo n.º 8
0
 public IHttpActionResult Get(string name)
 {
     if (name == "foods")
     {
         return(Ok(new { NumFoods = TheRepo.GetAllFoods().Count() }));
     }
     if (name == "users")
     {
         return(Ok(new { NumUsers = TheRepo.GetApiUsers().Count() }));
     }
     return(NotFound());
 }
Exemplo n.º 9
0
 public IHttpActionResult Get(int id)
 {
     if (id == 1)
     {
         return(Ok(new { NumFoods = TheRepo.GetAllFoods().Count() }));
     }
     if (id == 2)
     {
         return(Ok(new { NumUsers = TheRepo.GetApiUsers().Count() }));
     }
     return(NotFound());
 }
Exemplo n.º 10
0
 public object Get(DateTime diaryid)
 {
     try
     {
         var diary = TheRepo.GetDiary(_identityService.CurrentUser, diaryid);
         if (diaryid == null)
         {
             return(Request.CreateResponse(HttpStatusCode.NotFound));
         }
         return(TheModelFactory.CreateSummary(diary));
     }
     catch (Exception ex)
     {
         return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
     }
 }
Exemplo n.º 11
0
        public HttpResponseMessage Post([FromBody] TokenRequestModel model)
        {
            try
            {
                var user = TheRepo.GetApiUsers().Where(u => u.AppId == model.ApiKey).FirstOrDefault();
                if (user != null)
                {
                    var secret = user.Secret;

                    var key      = Convert.FromBase64String(secret);
                    var provider = new System.Security.Cryptography.HMACSHA256(key);

                    var hash      = provider.ComputeHash(Encoding.UTF8.GetBytes(user.AppId));
                    var signature = Convert.ToBase64String(hash);

                    if (signature == model.Signature)
                    {
                        var rawTokenInfo = string.Concat(user.AppId + DateTime.UtcNow.ToString("d"));
                        var rawTokenByte = Encoding.UTF8.GetBytes(rawTokenInfo);
                        var token        = provider.ComputeHash(rawTokenByte);

                        var authToken = new AuthToken()
                        {
                            Token      = Convert.ToBase64String(token),
                            Expiration = DateTime.UtcNow.AddDays(7),
                            ApiUser    = user
                        };

                        if (TheRepo.Insert(authToken) && TheRepo.SaveAll())
                        {
                            return(Request.CreateResponse(HttpStatusCode.Created, TheModelFactory.Create(authToken)));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }

            return(Request.CreateResponse(HttpStatusCode.BadRequest));
        }
Exemplo n.º 12
0
 public HttpResponseMessage Delete(DateTime diaryid, int id)
 {
     try
     {
         if (TheRepo.GetDiaryEntries(_identityService.CurrentUser, diaryid).Any(e => e.Id == id) == false)
         {
             return(Request.CreateResponse(HttpStatusCode.NotFound));
         }
         if (TheRepo.DeleteDiaryEntry(id) && TheRepo.SaveAll())
         {
             return(Request.CreateResponse(HttpStatusCode.OK));
         }
         else
         {
             return(Request.CreateResponse(HttpStatusCode.BadRequest));
         }
     }
     catch (Exception ex) {
         return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Could not save in the database"));
     }
 }
Exemplo n.º 13
0
        public object Get(bool includeMeasures = true, int page = 0)
        {
            IQueryable <Food> query;

            if (includeMeasures)
            {
                query = TheRepo.GetAllFoodsWithMeasures();
            }
            else
            {
                query = TheRepo.GetAllFoods();
            }

            var baseQuery = query.
                            OrderBy(f => f.Description);

            var totalCount = baseQuery.Count();
            var totalPages = Math.Ceiling((double)totalCount / PAGE_SIZE);

            var url     = new UrlHelper(Request);
            var prevUrl = page > 0?url.Link("Food", new { page = page - 1 }):"";
            var nextUrl = page < totalPages - 1?url.Link("Food", new { page = page + 1 }):"";

            var results = baseQuery
                          .Skip(PAGE_SIZE * page)
                          .Take(PAGE_SIZE)
                          .ToList()
                          .Select(f =>
                                  TheModelFactory.Create(f));

            return(new {
                TotalCount = totalCount,
                TotalPages = totalPages,
                PrevPageUrl = prevUrl,
                NextPageUrl = nextUrl,
                Results = results
            });
        }
Exemplo n.º 14
0
        public HttpResponseMessage Post(DateTime diaryid, [FromBody] DiaryEntryModel model)
        {
            try
            {
                var entity = TheModelFactory.Parse(model);
                if (entity == null)
                {
                    Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Could not read diary entry in body");
                }
                var diary = TheRepo.GetDiary(_identityService.CurrentUser, diaryid);
                if (diary == null)
                {
                    Request.CreateResponse(HttpStatusCode.NotFound);
                }

                //Make sure it's not duplicate
                if (diary.Entries.Any(e => e.Measure.Id == entity.Measure.Id))
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Duplicate Measure not allowed"));
                }

                //Save the new Entry
                diary.Entries.Add(entity);
                if (TheRepo.SaveAll())
                {
                    return(Request.CreateResponse(HttpStatusCode.Created, TheModelFactory.Create(entity)));
                }
                else
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Could not save in the database"));
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }
        }
Exemplo n.º 15
0
 public IHttpActionResult Get(int foodid)
 {
     return(Versioned(TheModelFactory.Create(TheRepo.GetFood(foodid)), "V1"));
     // return new VersionedActionResult<FoodModel>(this.Request, "V2", TheModelFactory.Create(TheRepo.GetFood(foodid)));
 }