예제 #1
0
        public IHttpActionResult PostPrayer(PrayerRequestDetail request)
        {
            try
            {
                var isCurrent = request.IsCurrent;
                dbContext.PrayerRequests.Add(request);
                dbContext.SaveChanges();

                var result = dbContext.PrayerRequests.Where(x => x.IsCurrent == isCurrent).OrderByDescending(y => y.Id)
                             .Take(_defaultPageSize)
                             .ToList();
                //var result = dbContext.PrayerRequests.Select(x => x).OrderByDescending(y => y.Id);
                //var result = dbContext.PrayerRequests.ToList().GroupBy(b => b.IsCurrent).Select(grouping => grouping.OrderByDescending(b => b.Id))
                //            .OrderByDescending(grouping => grouping.First().IsCurrent)
                //            .SelectMany(grouping => grouping)
                //            .Skip(skip)
                //            .Take(pageSize)
                //            .ToList();....
                var total = dbContext.PrayerRequests.Where(x => x.IsCurrent == isCurrent).Count();

                return(Ok(new PagedResult <PrayerRequestDetail>(result, _defaultPageNo, _defaultPageSize, total)));
            }
            catch (Exception e)
            {
                return(InternalServerError());
            }
        }
예제 #2
0
        public IHttpActionResult PostPrayer(PrayerRequestDetail request)
        {
            try
            {
                var skip     = 0;
                var pageSize = 10;
                var pageNo   = 1;

                dbContext.PrayerRequests.Add(request);
                dbContext.SaveChanges();
                //var result = dbContext.PrayerRequests.Select(x => x).OrderByDescending(y => y.Id);
                var result = dbContext.PrayerRequests.ToList().GroupBy(b => b.IsCurrent).Select(grouping => grouping.OrderByDescending(b => b.Id))
                             .OrderByDescending(grouping => grouping.First().IsCurrent)
                             .SelectMany(grouping => grouping)
                             .Skip(skip)
                             .Take(pageSize)
                             .ToList();
                var total = dbContext.PrayerRequests.Count();
                var temp  = new PagedResult <PrayerRequestDetail>(result, pageNo, pageSize, total);

                return(Ok(new PagedResult <PrayerRequestDetail>(result, pageNo, pageSize, total)));
            }
            catch (Exception)
            {
                return(InternalServerError());
            }
        }
예제 #3
0
 public static bool IsModified(this PrayerRequestDetail prayerRequest)
 {
     if (prayerRequest.Id < 0)
     {
         return(true);
     }
     return(false);
 }
예제 #4
0
        /// <summary>
        /// End point to update the object
        ///
        /// </summary>
        /// <param name="id"></param>
        /// <param name="updatedRequest"></param>
        /// <returns></returns>
        public IHttpActionResult PutPrayer(int id, PrayerRequestDetail updatedRequest)
        {
            // TODO: need to refactor this once adding the edit feature
            try
            {
                PrayerRequestDetail existingRequest;
                bool isCurrent;
                // the negative id object is the object that contains the updated info
                // this is to handle check/uncheck pray button
                if (updatedRequest.IsModified())
                {
                    existingRequest           = dbContext.PrayerRequests.FirstOrDefault(x => x.Id == id);
                    isCurrent                 = existingRequest.IsCurrent;
                    existingRequest.IsCurrent = !existingRequest.IsCurrent;
                    dbContext.SaveChanges();

                    var result = dbContext.PrayerRequests.Where(x => x.IsCurrent == isCurrent).OrderByDescending(y => y.Id)
                                 .Take(_defaultPageSize)
                                 .ToList();
                    var total = dbContext.PrayerRequests.Count();
                    return(Ok(new PagedResult <PrayerRequestDetail>(result, _defaultPageNo, _defaultPageSize, total)));
                }

                // the following is for edit the prayer request
                // Not support the edit feature yet
                existingRequest = dbContext.PrayerRequests.FirstOrDefault(x => x.Id == updatedRequest.Id);
                isCurrent       = existingRequest.IsCurrent;
                if (existingRequest != null)
                {
                    existingRequest.Name      = updatedRequest.Name;
                    existingRequest.Request   = updatedRequest.Request;
                    existingRequest.IsCurrent = updatedRequest.IsCurrent;
                    dbContext.SaveChanges();

                    var result = dbContext.PrayerRequests.Where(x => x.IsCurrent == isCurrent).OrderByDescending(y => y.Id)
                                 .Take(_defaultPageSize)
                                 .ToList();

                    var total = dbContext.PrayerRequests.Count();
                    return(Ok(new PagedResult <PrayerRequestDetail>(result, _defaultPageNo, _defaultPageSize, total)));
                }

                return(NotFound());
            }
            catch (Exception)
            {
                return(InternalServerError());
            }
        }
예제 #5
0
        public IHttpActionResult PutPrayer(int id, PrayerRequestDetail updatedRequest)
        {
            try
            {
                var skip     = 0;
                var pageSize = 10;
                var pageNo   = 1;

                PrayerRequestDetail existingRequest;
                if (updatedRequest.Id < 0)
                {
                    existingRequest           = dbContext.PrayerRequests.FirstOrDefault(x => x.Id == id);
                    existingRequest.IsCurrent = false;
                    dbContext.SaveChanges();
                    var result = dbContext.PrayerRequests.ToList().GroupBy(b => b.IsCurrent).Select(grouping => grouping.OrderByDescending(b => b.Id))
                                 .OrderByDescending(grouping => grouping.First().IsCurrent)
                                 .SelectMany(grouping => grouping)
                                 .Skip(skip)
                                 .Take(pageSize)
                                 .ToList();
                    var total = dbContext.PrayerRequests.Count();
                    return(Ok(new PagedResult <PrayerRequestDetail>(result, pageNo, pageSize, total)));
                }

                existingRequest = dbContext.PrayerRequests.FirstOrDefault(x => x.Id == updatedRequest.Id);
                if (existingRequest != null)
                {
                    existingRequest.Name      = updatedRequest.Name;
                    existingRequest.Request   = updatedRequest.Request;
                    existingRequest.IsCurrent = updatedRequest.IsCurrent;

                    dbContext.SaveChanges();
                    var result = dbContext.PrayerRequests.ToList().GroupBy(b => b.IsCurrent).Select(grouping => grouping.OrderByDescending(b => b.Id))
                                 .OrderByDescending(grouping => grouping.First().IsCurrent)
                                 .SelectMany(grouping => grouping)
                                 .Skip(skip)
                                 .Take(pageSize)
                                 .ToList();
                    var total = dbContext.PrayerRequests.Count();
                    return(Ok(new PagedResult <PrayerRequestDetail>(result, pageNo, pageSize, total)));
                }

                return(NotFound());
            }
            catch (Exception)
            {
                return(InternalServerError());
            }
        }
예제 #6
0
        protected override void Seed(DatabaseContext context)
        {
            base.Seed(context);

            var prayerRequestForJason = new PrayerRequestDetail()
            {
                Id        = 1,
                Name      = "Jason",
                Date      = System.DateTime.Now,
                IsCurrent = false,
                Request   = "Hope to get a good house."
            };

            context.PrayerRequests.Add(prayerRequestForJason);
            context.SaveChanges();
        }