Example #1
0
        public async Task <ActionResult> GoogleCalendarAsync(CancellationToken cancellationToken)
        {
            var result = await new AuthorizationCodeMvcApp(this, new Showcase.Util.ZenoFlowMetadata()).
                         AuthorizeAsync(cancellationToken);

            if (result.Credential != null)
            {
                var service = new CalendarService(new BaseClientService.Initializer
                {
                    HttpClientInitializer = result.Credential,
                    ApplicationName       = "ASP.NET MVC Sample"
                });

                if (String.IsNullOrEmpty(Request.Form["CalendarID"]))
                {
                    CalendarListResource.ListRequest request0 = service.CalendarList.List();
                    request0.MaxResults = 10;

                    // List events.
                    CalendarList calendars = request0.Execute();
                    string       desc      = string.Empty;
                    Dictionary <string, string> calendarList = new Dictionary <string, string>();
                    if (calendars.Items != null && calendars.Items.Count > 0)
                    {
                        foreach (var calendarItem in calendars.Items)
                        {
                            calendarList.Add(calendarItem.Id, calendarItem.Summary);
                        }
                    }
                    ViewBag.Message = "Please select which calendar you want to add.";
                    return(View(calendarList));
                }
                else
                {
                    DateTime tomorrow    = DateTime.Today.AddDays(1);
                    string   chineseDate = ChineseCalendar.GetChineseDate(tomorrow);

                    var newEvent = new Google.Apis.Calendar.v3.Data.Event()
                    {
                        Summary = chineseDate,

                        Start = new EventDateTime()
                        {
                            Date = tomorrow.ToString("yyyy-MM-dd"),
                        },
                        End = new EventDateTime()
                        {
                            Date = tomorrow.ToString("yyyy-MM-dd"),
                        },
                        Transparency = "transparent"
                    };

                    EventsResource.InsertRequest request = service.Events.Insert(newEvent, Request.Form["CalendarID"]);
                    Event createdEvent = request.Execute();

                    ViewBag.Message = "Google Calendar Event Added: URL = " + createdEvent.HtmlLink;
                    return(View());
                }

                /*
                 * Showcase.ZenoService.ZenoServiceClient zeno = new Showcase.ZenoService.ZenoServiceClient();
                 * GoogleRequest request = new GoogleRequest();
                 * request.Type = ShowcaseService.Contract.GoogleRequestType.CalendarPush;
                 * request.User = new ShowcaseService.Contract.GoogleUser(){ AccessToken = result.Credential.Token.AccessToken, RefreshToken = result.Credential.Token.RefreshToken};
                 * GoogleResponse response = zeno.InvokeGoogleService(request);
                 * ViewBag.Message = response.Message;
                 */
            }
            else
            {
                return(new RedirectResult(result.RedirectUri));
            }
        }