/// <summary>
        /// ics file download
        /// </summary>
        /// <param name="guid"></param>
        private void Download(string guid)
        {
            if (!string.IsNullOrEmpty(guid))
            {

                List<CalendarEvent> calendarEvents;
                using (EventOrganizerEntities db = new EventOrganizerEntities())
                {
                    calendarEvents = db.usp_GetEventsByGuid(Extensions.DecodeFrom64(guid)).ToList();
                }
                string fileName = Guid.NewGuid().ToString() + ".ics";
                Response.Write("BEGIN:VCALENDAR" + Environment.NewLine);
                Response.Write("VERSION:2.0" + Environment.NewLine);
                Response.Write("PRODID: -//ScheduleOnce//EN" + Environment.NewLine);
                Response.Write("METHOD:PUBLISH" + Environment.NewLine);
                Response.AddHeader("content-disposition", "attachment; filename=" + fileName);
                StringBuilder eventInICSFormat = new StringBuilder();
                foreach (CalendarEvent calEvent in calendarEvents)
                {
                    eventInICSFormat.Append("BEGIN:VEVENT" + Environment.NewLine);
                    eventInICSFormat.Append("DTEND:" + (calEvent.EndDate.ToString("s").Replace("-", "").Replace(":", "")) + Environment.NewLine);
                    eventInICSFormat.Append("DTSTART:" + calEvent.StartDate.ToString("s").Replace("-", "").Replace(":", "") + Environment.NewLine);
                    StringBuilder eventDescription = new StringBuilder();
                    if (!string.IsNullOrWhiteSpace(calEvent.Abstract))
                    {
                        eventDescription.Append(calEvent.Abstract + "\\n");
                    }
                    if (!string.IsNullOrWhiteSpace(calEvent.EventDescription))
                    {
                        eventDescription.Append("Event Details : " + calEvent.EventDescription.Replace(Environment.NewLine, "\\n") + "\\n");
                    }
                    if (!string.IsNullOrWhiteSpace(calEvent.Url))
                    {
                        eventDescription.Append("Url : " + calEvent.Url + "\\n");
                    }
                    if (calEvent.Price.HasValue)
                    {
                        eventDescription.Append("Price : " + calEvent.Price.Value.ToString());
                    }
                    eventInICSFormat.Append("DESCRIPTION:" + eventDescription.ToString() + Environment.NewLine);
                    eventInICSFormat.Append("LOCATION:" + calEvent.Location + Environment.NewLine);
                    eventInICSFormat.Append("PRIORITY:5" + Environment.NewLine);
                    eventInICSFormat.Append("SEQUENCE:0" + Environment.NewLine);
                    eventInICSFormat.Append("SUMMARY;LANGUAGE=en-us:" + calEvent.EventTitle + Environment.NewLine);
                    eventInICSFormat.Append("TRANSP:OPAQUE" + Environment.NewLine);
                    eventInICSFormat.Append(string.Format("UID:{0}", Guid.NewGuid().ToString().ToUpper()) + Environment.NewLine);
                    eventInICSFormat.Append("BEGIN:VALARM" + Environment.NewLine);
                    eventInICSFormat.Append("TRIGGER:-PT15M" + Environment.NewLine);
                    eventInICSFormat.Append("ACTION:DISPLAY" + Environment.NewLine);
                    eventInICSFormat.Append("DESCRIPTION:Reminder" + Environment.NewLine);
                    eventInICSFormat.Append("END:VALARM" + Environment.NewLine);
                    eventInICSFormat.Append("END:VEVENT" + Environment.NewLine);
                }
                eventInICSFormat.Append("END:VCALENDAR" + Environment.NewLine);
                Response.Write(eventInICSFormat);
                Response.End();
            }
        }
        public ActionResult EventFilter(FormCollection formCollection)
        {
            try
            {
                string guid = Guid.NewGuid().ToString();
                string filterValue = CreateFilterXml(formCollection);
                using (EventOrganizerEntities db = new EventOrganizerEntities())
                {
                    ObjectParameter guidOutput = new ObjectParameter("Guid", typeof(string));
                    guidOutput.Value = guid;
                    db.usp_AddEventFilter(filterValue, guidOutput);
                    guid = Convert.ToString(guidOutput.Value);

                }
                using (EventOrganizerEntities db = new EventOrganizerEntities())
                {
                    List<CalendarEvent> calendarEvents = db.usp_GetEventsByGuid(guid).ToList();
                    if (calendarEvents == null || calendarEvents.Count == 0)
                        return Content("No event is associated with your filter criteria. Please try different filter settings.,0");
                }
                //guid changed to base 64 encrypted string
                guid = Extensions.EncodeTo64(guid);
                ViewData["eventUrl"] = HttpContext.Request.Url.ToString().Replace("EventFilter", "DownloadEvent/") + guid;
                return Content("Your filter has been applied, please download the calendar event!," + HttpContext.Request.Url.ToString().Replace("EventFilter", "DownloadEvent/") + guid);
            }
            catch (Exception)
            {
                return Content("There is problem while working on filter. Please try again.");
            }
        }