コード例 #1
0
        public GetEventsTests()
        {
            this.Database = new MockSponsorServiceDatabase();

            IConfiguration config = Mock.Create <IConfiguration>();

            this.Controller = new GetEvents(config, this.Database);
        }
コード例 #2
0
        public async Task <PagedResponse <EventData> > GetEvents([FromQuery] PagedRequest request)
        {
            var query    = new GetEvents(request.PageSize, request.PageNumber);
            var response = await dispatcher
                           .DispatchAsync <PagedResponse <EventData>, GetEvents>(query);

            return(response);
        }
コード例 #3
0
        public async Task <JObject> PostAsync(JObject jobject)
        {
            GetEvents getEvents = new GetEvents();

            getEvents.readEvents();

            return(await Task.FromResult <JObject>(Core.DownloadEvents(jobject)));
        }
コード例 #4
0
 /// <summary>
 /// 實作All、Any、Sum、Average、Min、Max、Aggregate
 /// </summary>
 /// <returns></returns>
 public ActionResult Process8()
 {
     string returnValue = "";
     GetEvents getEvents = new GetEvents();
     CalendarEvent[] events = getEvents.CalenderEvent;
     DateTimeOffset newEventStart = new DateTimeOffset(2009, 7, 20, 19, 45, 00, TimeSpan.Zero);
     TimeSpan newEventDuration = TimeSpan.FromHours(5);
     bool overlaps = events.Any(
         ev => TimesOverlap(ev.StartTime, ev.Duration, newEventStart, newEventDuration));
     bool noOverlaps = events.All(
         ev => TimesOverlap(ev.StartTime, ev.Duration, newEventStart, newEventDuration));
     //總數、平均、最大、最小
     events.Sum(ev => ev.Duration.TotalHours);
     events.Average(ev => ev.Duration.TotalHours);
     events.Max(ev => ev.Duration.TotalHours);
     events.Min(ev => ev.Duration.TotalHours);
     //計算集合裡的數量
     int count = events.Aggregate(0, (c, ev) => c + 1);
     //利用Aggregate計算加總數
     double hours = events.Aggregate(0.0, (total, ev) => total + ev.Duration.TotalHours);
     //利用Aggregate計算平均值
     double averageHours = events.Aggregate(
         new { TotalHours = 0.0, Count = 0 },
         (agg, ev) => new
             {
                 TotalHours = agg.TotalHours + ev.Duration.TotalHours,
                 Count = agg.Count + 1
             },
         (agg) => agg.TotalHours / agg.Count);
     //
     return Content(overlaps.ToString() + "<br>" +
         noOverlaps.ToString() + "<br>" +
         count.ToString());
 }
コード例 #5
0
 /// <summary>
 /// 作序號
 /// </summary>
 /// <returns></returns>
 public ActionResult Process7()
 {
     string returnValue = "";
     GetEvents getEvents = new GetEvents();
     CalendarEvent[] events = getEvents.CalenderEvent;
     var numberedEvents = events.Select((ev, i) => string.Format("{0}: {1}", i + 1, ev.Title));
     //
     foreach (string item in numberedEvents)
     {
         if (returnValue != "") { returnValue += "<br>"; }
         returnValue += item;
     }
     return Content(returnValue);
 }
コード例 #6
0
 /// <summary>
 /// 同時取兩個來源
 /// </summary>
 /// <returns></returns>
 public ActionResult Process5()
 {
     string returnValue = "";
     GetEvents getEvents = new GetEvents();
     CalendarEvent[] events = getEvents.CalenderEvent;
     //
     var eventsByDay = from ev in events
                       group ev by ev.StartTime.Date;
     //
     var items = from day in eventsByDay
                 from item in day
                 select item;
     foreach (CalendarEvent item in items)
     {
         if (returnValue != "") { returnValue += "<br>"; }
         returnValue += item.Title;
     }
     //
     returnValue += "<br>itrms2";
     List<CalendarEvent> items2 = new List<CalendarEvent>();
     foreach (IGrouping<DateTime, CalendarEvent> day in eventsByDay)
     {
         foreach (CalendarEvent item in day)
         {
             items2.Add(item);
         }
     }
     foreach (CalendarEvent item in items2)
     {
         if (returnValue != "") { returnValue += "<br>"; }
         returnValue += item.Title;
     }
     return Content(returnValue);
 }
コード例 #7
0
 /// <summary>
 /// LINQ的Order及Group
 /// </summary>
 /// <returns></returns>
 public ActionResult Process4()
 {
     string returnValue = "";
     GetEvents getEvents = new GetEvents();
     CalendarEvent[] events = getEvents.CalenderEvent;
     //
     var eventsByStartTime = from ev in events
                             orderby ev.StartTime ascending
                             select ev;
     //
     var eventsByStartTime2 = events.OrderBy(ev => ev.StartTime);
     //
     var eventsByDay = from ev in events
                       group ev by ev.StartTime.Date;
     //
     var eventsByDay2 = from ev in events
                        group ev by ev.StartTime.Date into dayGroup
                        select dayGroup.ToArray();
     //
     foreach (var day in eventsByDay)
     {
         returnValue += "<br>Events for " + day.Key;
         foreach (var item in day)
         {
             returnValue += "<br>" + item.Title;
         }
     }
     //
     foreach (var day in eventsByDay2)
     {
         returnValue += "<br>Events for " + day[0].StartTime.Date;
         for (int i = 0; i < day.Length; i++)
         {
             returnValue += "<br>" + day[i].Title;
         }
     }
     return Content(returnValue);
 }
コード例 #8
0
 public Task <PageModel <EventModel> > Handle(GetEvents query, CancellationToken cancellationToken)
 {
     return(Repository.GetPaged(query, cancellationToken));
 }
コード例 #9
0
        public List<VEVENT> Get(GetEvents request)
        {
            try
            {
                return request.Page != null && request.Size != null
                    ? eventRepository.Get((request.Page.Value - 1)*request.Size.Value, request.Size.Value).ToList()
                    : eventRepository.Get().ToList();

            }
            catch (InvalidOperationException ex)
            {
                logger.Error(ex.ToString());
                throw;
            }
            catch (ApplicationException ex)
            {
                logger.Error(ex.ToString());
                throw;
            }
            catch (Exception ex)
            {
                logger.Error(ex.ToString()); 
                throw;
            }
        }
コード例 #10
0
 public async Task <IReadOnlyCollection <IEvent> > Run(GetEvents criteria, IContext context)
 => (await Run(new State(criteria.Object), context)).Events;
コード例 #11
0
 /// <summary>
 /// 尋找陣列裡的元素
 /// </summary>
 /// <returns></returns>
 public ActionResult Process3()
 {
     string returnValue = "";
     GetEvents getEvents = new GetEvents();
     CalenderEvent[] events = getEvents.CalenderEvent;
     DateTime dateOfInterest = new DateTime(2009, 7, 12);
     //Finding elements 第一種方法
     foreach (CalenderEvent item in events)
     {
         if (item.StartTime.Date == dateOfInterest)
         {
             returnValue += item.Title + ":" + item.StartTime;
         }
     }
     //Finding elements 第二種方法
     CalenderEvent[] itemOnDateOfInterest = Array.FindAll(events,
         e => e.StartTime.Date == dateOfInterest);
     returnValue += "<br>";
     foreach (CalenderEvent item in itemOnDateOfInterest)
     {
         returnValue += item.Title + ":" + item.StartTime;
     }
     return Content(returnValue);
     //另外有Find、FindLast、FindIndex、FindLastIndex
 }
コード例 #12
0
 //
 // GET: /Chapter7/
 /// <summary>
 /// 建立以Class為基礎的Array
 /// </summary>
 /// <returns></returns>
 public ActionResult Process1()
 {
     GetEvents getEvents = new GetEvents();
     CalenderEvent[] events = getEvents.CalenderEvent;
     //
     string title = events[2].Title;
     events[2] = events[0];
     return Content(title + "_" + events[2].Title);
 }
コード例 #13
0
 public async Task <ActionResult <PageModel <EventModel> > > Get([FromRoute] GetEvents query, CancellationToken cancellationToken)
 {
     return(Ok(await Query.Execute <GetEvents, PageModel <EventModel> >(query, cancellationToken)));
 }
コード例 #14
0
 public async Task <PagedResponse <EventData> > HandleAsync(GetEvents query)
 {
     return(await eventDataSearcher.GetEventData(query.PageSize, query.PageNumber));
 }
コード例 #15
0
        /// <summary>
        /// 實作Join
        /// </summary>
        /// <returns></returns>
        public ActionResult Process9()
        {
            string returnValue = "";
            GetEvents getEvents = new GetEvents();
            CalendarEvent[] events = getEvents.CalenderEvent;
            Phone[] phoneEvents =
            {
                new Phone(){ Name = "", Time = new DateTimeOffset(2009, 7, 11, 15, 00, 00, TimeSpan.Zero)}
            };

            //
            var pairs = from localEvent in events
                        join phoneEvent in phoneEvents
                        on new { Title = localEvent.Title, Start = localEvent.StartTime }
                        equals new { Title = phoneEvent.Name, Start = phoneEvent.Time }
                        select new { Local = localEvent, phone = phoneEvent };
            //
            return View();
        }
コード例 #16
0
 /// <summary>
 /// 轉型
 /// </summary>
 /// <returns></returns>
 public ActionResult ProcessA()
 {
     string returnValue = "";
     GetEvents getEvents = new GetEvents();
     CalendarEvent[] events = getEvents.CalenderEvent;
     //
     var eventsByDay = from ev in events
                       group ev by ev.StartTime.Date into dayGroup
                       select dayGroup.ToArray();
     //
     ArrayList fruits = new ArrayList();
     fruits.Add("mango");
     fruits.Add("apple");
     fruits.Add("lemon");
     IEnumerable<string> query =
         fruits.Cast<string>().Select(fruit => fruit);
     foreach (string fruit in query)
     {
         if (fruit != "") { returnValue += "<br>"; }
         returnValue += fruit;
     }
     //
     return Content(returnValue);
 }
コード例 #17
0
 /// <summary>
 /// 陣列排序
 /// </summary>
 /// <returns></returns>
 public ActionResult Process4()
 {
     string returnValue = "";
     GetEvents getEvents = new GetEvents();
     GetEvents2 getEvents2 = new GetEvents2();
     CalenderEvent[] events = getEvents.CalenderEvent;
     CalenderEvent2[] events2 = getEvents2.CalenderEvent2;
     //
     Array.Sort(events, (event1, event2) => event1.StartTime.CompareTo(event2.StartTime));
     //自訂排序
     Array.Sort(events2);
     //
     return Content("");
 }