public HttpResponseMessage NewAnnouncement([FromBody] AnnouncementCreateDTO announcement)
        {
            if (ModelState.IsValid)
            {
                Announcement entity = new Announcement
                {
                    CategoryId     = announcement.CategoryId,
                    Description    = announcement.Description,
                    Email          = announcement.Email,
                    Phonenumber    = announcement.Phonenumber,
                    Title          = announcement.Title,
                    PostDate       = DateTime.Now,
                    ExpirationDate = DateTime.Now.AddMonths(1),
                    Confirmed      = false
                };

                using (SummerCampDbContext ctx = new SummerCampDbContext())
                {
                    ctx.Announcements.Add(entity);
                    ctx.SaveChanges();
                }

                HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, entity);
                //string uri = Url.Link("DefaultApi", new { Id = entity.AnnouncementId });
                //response.Headers.Location = new Uri(uri);
                return(response);
            }

            return(Request.CreateResponse(HttpStatusCode.BadRequest, ModelState));
        }
示例#2
0
        public HttpResponseMessage NewReview([FromBody] ReviewCreateDTO review)
        {
            if (string.IsNullOrEmpty(review.Comment) && !review.Rating.HasValue)
            {
                ModelState.AddModelError("", "Rating or comment required");
            }

            if (ModelState.IsValid)
            {
                Review entity = new Review
                {
                    AnnouncementId = review.AnnouncementId,
                    Comment        = review.Comment,
                    Username       = review.Username,
                    Rating         = review.Rating,
                    Postdate       = DateTime.Now
                };

                using (SummerCampDbContext ctx = new SummerCampDbContext())
                {
                    ctx.Reviews.Add(entity);
                    ctx.SaveChanges();
                }

                HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, review);
                return(response);
            }

            HttpError error = new HttpError(ModelState, false);

            return(Request.CreateResponse(HttpStatusCode.BadRequest, error));
        }
        public HttpResponseMessage Get()
        {
            using (SummerCampDbContext ctx = new SummerCampDbContext())
            {
                var data = ctx.Categories.Select(c =>
                                                 new
                {
                    CategoryId = c.CategoryId,
                    Name       = c.Name
                }).ToList();

                HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, data);
                return(response);
            }
        }
        public HttpResponseMessage Get(int id)
        {
            using (SummerCampDbContext ctx = new SummerCampDbContext())
            {
                Announcement announcement = ctx.Announcements.Include(a => a.Category).FirstOrDefault(a => a.AnnouncementId == id);

                if (announcement == null)
                {
                    return(Request.CreateResponse(HttpStatusCode.NotFound));
                }

                var data = new { Id = announcement.AnnouncementId, CategoryName = announcement.Category.Name, CategoryId = announcement.Category.CategoryId, ExpirationDate = announcement.ExpirationDate, PostDate = announcement.PostDate, Phonenumber = announcement.Phonenumber, Title = announcement.Title, Closed = announcement.Closed, Description = announcement.Description, Email = announcement.Email, Confirmed = announcement.Confirmed };

                return(Request.CreateResponse(HttpStatusCode.OK, data));
            }
        }
        public HttpResponseMessage CloseAnnouncement([FromUri] int id, [FromBody] AnnouncementAuthDTO authInfo)
        {
            using (SummerCampDbContext ctx = new SummerCampDbContext())
            {
                Announcement announcement = ctx.Announcements.FirstOrDefault(a => a.AnnouncementId == id);

                if (string.Equals(announcement.Email, authInfo.Email, StringComparison.OrdinalIgnoreCase) && announcement.Confirmed)
                {
                    announcement.Closed = true;
                    ctx.SaveChanges();

                    return(Request.CreateResponse(HttpStatusCode.OK));
                }

                return(Request.CreateResponse(HttpStatusCode.Forbidden));
            }
        }
示例#6
0
        public HttpResponseMessage GetByAnnouncementId(int announcementId)
        {
            using (SummerCampDbContext ctx = new SummerCampDbContext())
            {
                var data = ctx.Reviews.Where(r => r.AnnouncementId == announcementId).Select(r =>
                                                                                             new
                {
                    Rating   = r.Rating,
                    Comment  = r.Comment,
                    Username = r.Username,
                    Postdate = r.Postdate
                }).ToList();  //.OrderByDescending(d => d.Postdate);

                HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, data);
                return(response);
            }
        }
        public HttpResponseMessage Get()
        {
            using (SummerCampDbContext ctx = new SummerCampDbContext())
            {
                var data = ctx.Announcements.Where(a => a.Confirmed).Select(a =>
                                                                            new
                {
                    AnnouncementId = a.AnnouncementId,
                    Closed         = a.Closed,
                    Title          = a.Title,
                    CategoryName   = a.Category.Name,
                    PostDate       = a.PostDate,
                    ExpirationDate = a.ExpirationDate
                }).ToList();



                HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, data);
                return(response);
            }
        }
        public HttpResponseMessage ExtendAnnouncement([FromUri] int id, [FromBody] AnnouncementAuthDTO authInfo)
        {
            using (SummerCampDbContext ctx = new SummerCampDbContext())
            {
                Announcement announcement = ctx.Announcements.FirstOrDefault(a => a.AnnouncementId == id);

                if (string.Equals(announcement.Email, authInfo.Email, StringComparison.OrdinalIgnoreCase))
                {
                    if (announcement.Closed && announcement.Confirmed)
                    {
                        return(Request.CreateResponse(HttpStatusCode.MethodNotAllowed));
                    }

                    announcement.ExpirationDate = announcement.ExpirationDate.AddMonths(1);
                    ctx.SaveChanges();

                    return(Request.CreateResponse(HttpStatusCode.OK));
                }

                return(Request.CreateResponse(HttpStatusCode.Forbidden));
            }
        }
        public HttpResponseMessage Search([FromUri] int?CategoryId, [FromBody] Title model)
        {
            using (SummerCampDbContext ctx = new SummerCampDbContext())
            {
                //IEnumerable<Announcement> a = ctx.Announcements;//.FirstOrDefault(a => a.AnnouncementId == CategoryId);


                //if (CategoryId.HasValue)
                //{
                //    a = a.Where(ann => ann.CategoryId == CategoryId);
                //    //HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, data);

                //    //return response;
                //    //return Request.CreateResponse(HttpStatusCode.OK, data);
                //}
                //if (model.Text != null)
                //{
                //    a = a.Where(ann => ann.Title == model.Text);
                //}
                //a.ToList();

                IEnumerable <Announcement> ann = ctx.Announcements;
                if (CategoryId.HasValue)
                {
                    ann = ann.Where(a => a.CategoryId == CategoryId).ToList();
                }

                if (model.Text != null)
                {
                    ann = ann.Where(a => a.Title == model.Text).ToList();
                }
                //DateTime date1 = new DateTime(2009, 8, 1, 0, 0, 0);
                DateTime date    = new DateTime(0001, 1, 1, 12, 0, 0);
                int      result1 = DateTime.Compare(model.StartDate, date);
                int      result2 = DateTime.Compare(model.EndDate, date);
                if (result1 != -1)
                {
                    ann = ann.Where(a => model.StartDate.Date < a.PostDate.Date).ToList();
                }
                if (result2 != -1)
                {
                    ann = ann.Where(a => a.ExpirationDate.Date > model.EndDate.Date).ToList();
                }
                if (ann == null)
                {
                    return(Request.CreateResponse(HttpStatusCode.OK));
                }
                else
                {
                    if (ann == ctx.Announcements)
                    {
                        var data = ctx.Announcements.Select(a =>
                                                            new
                        {
                            AnnouncementId = a.AnnouncementId,
                            CategoryId     = a.CategoryId,
                            Description    = a.Description,
                            Title          = a.Title,
                            CategoryName   = a.Category.Name,
                            StartDate      = a.PostDate,
                            EndDate        = a.ExpirationDate
                        }).ToList();



                        HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, data);
                        return(response);
                    }
                    else
                    {
                        var data = ann.Select(a =>
                                              new
                        {
                            AnnouncementId = a.AnnouncementId,
                            CategoryId     = a.CategoryId,
                            Description    = a.Description,
                            Title          = a.Title,
                            CategoryName   = a.Category.Name,
                            StartDate      = a.PostDate,
                            EndDate        = a.ExpirationDate
                        }).ToList();

                        return(Request.CreateResponse(HttpStatusCode.OK, data));
                    }
                }
            }
        }