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 }); } }
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)); }