コード例 #1
0
        public JsonResult SaveEvent(EventCalender evt, int personid)
        {
            //bool status = false;
            using (SQLCalenderEntities dc = new SQLCalenderEntities())
            {
                if (evt.EndAt != null && evt.StartAt.TimeOfDay == new TimeSpan(0, 0, 0))
                {
                    evt.IsFullDay = true;
                }
                else
                {
                    evt.IsFullDay = false;
                }

                if (evt.EventID > 0)
                {
                    var v = dc.EventCalenders.Where(a => a.EventID.Equals(evt.EventID)).FirstOrDefault();
                    if (v != null)
                    {
                        v.Title = evt.Title;

                        v.Description = evt.Description;
                        v.StartAt     = evt.StartAt;
                        v.EndAt       = evt.EndAt;
                        v.IsFullDay   = evt.IsFullDay;
                        v.PersonId    = evt.PersonId;
                    }
                }
                else
                {
                    evt.PersonId = personid;
                    dc.EventCalenders.Add(evt);
                }
                dc.SaveChanges();
                var p       = dc.EventCalenders.Where(c => c.PersonId == personid).ToList();
                var newList = p.Select(l => new
                {
                    l.EventID,
                    l.Title,
                    l.Description,
                    l.StartAt,
                    l.EndAt,
                    l.IsFullDay
                }).ToList();
                return(new JsonResult {
                    Data = newList
                });
            }
        }
コード例 #2
0
        public async Task <HttpResponse> Get(DateTime?dateFrom, DateTime?dateTo, string category, int limit, bool?displayFeatured, string tag, string price, double latitude, double longitude)
        {
            var entries = await _cache.GetFromCacheOrDirectlyAsync("event-all", GetAllEvents, _eventsTimeout);

            if (entries == null || !entries.Any())
            {
                return(HttpResponse.Failure(HttpStatusCode.NotFound, "No events found"));
            }

            var searchdateFrom = dateFrom;
            var searchdateTo   = dateTo;

            var now = _timeProvider.Now().Date;

            if (!dateFrom.HasValue && !dateTo.HasValue)
            {
                searchdateFrom = now;
                searchdateTo   = DateTime.MaxValue;
            }
            else if (dateFrom.HasValue && !dateTo.HasValue)
            {
                searchdateTo = DateTime.MaxValue;
            }
            else if (!dateFrom.HasValue && dateTo.HasValue && dateTo.Value.Date < now)
            {
                searchdateFrom = DateTime.MinValue;
            }
            else if (!dateFrom.HasValue && dateTo.HasValue && dateTo.Value.Date >= now)
            {
                searchdateFrom = now;
            }

            var searchCoord = new GeoCoordinate(latitude, longitude);

            var events =
                GetAllEventsAndTheirReccurrences(entries)
                .Where(e => CheckDates(searchdateFrom, searchdateTo, e))
                .Where(e => string.IsNullOrWhiteSpace(category) || e.EventCategories.Any(c => c.Slug.ToLower() == category.ToLower()) || e.EventCategories.Any(c => c.Name.ToLower() == category.ToLower()))
                .Where(e => string.IsNullOrWhiteSpace(tag) || e.Tags.Contains(tag.ToLower()))
                .Where(e => string.IsNullOrWhiteSpace(price) || price.ToLower() == "paid,free" || price.ToLower() == "free,paid" || (price.ToLower() == "free" && (e.Free ?? false)) || (price.ToLower() == "paid" && (e.Paid ?? false)))
                .Where(e => (latitude == 0 && longitude == 0) || searchCoord.GetDistanceTo(e.Coord) < 3200)
                .OrderBy(o => o.EventDate)
                .ThenBy(c => c.StartTime)
                .ThenBy(t => t.Title)
                .ToList();

            if (displayFeatured != null && displayFeatured == true)
            {
                events = events.OrderBy(e => e.Featured ? 0 : 1).ToList();
            }

            if (limit > 0)
            {
                events = events.Take(limit).ToList();
            }

            var eventCategories = await GetCategories();

            var eventCalender = new EventCalender();

            eventCalender.SetEvents(events, eventCategories);

            return(HttpResponse.Successful(eventCalender));
        }