コード例 #1
0
ファイル: Meetingaccept.aspx.cs プロジェクト: szarath/Fincal
        private async void insertevent()
        {
            UserData user = (UserData)Session["User"];



            UserCredential credential;

            using (var stream =
                       new FileStream(Server.MapPath("client_secret.json"), FileMode.Open, FileAccess.Read))
            {
                string credPath = System.Environment.GetFolderPath(
                    System.Environment.SpecialFolder.Personal);;
                credPath = Path.Combine(credPath, ".credentials/calendarinsert-dotnet-quickstart.json");

                credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                    GoogleClientSecrets.Load(stream).Secrets, Scopes, "user", CancellationToken.None, new FileDataStore(credPath, true)).Result;
                Console.WriteLine("Credential file saved to: " + credPath);
            }

            // Create Google Calendar API service.
            var service = new CalendarService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName       = ApplicationName,
            });

            CalendarService cs = service;



            Event newEvent = new Event()
            {
                Summary     = "Project: " + txtprojname.Value.ToString(),
                Location    = "On Fincal",
                Description = txtmeetd.Value.ToString(),
                Start       = new EventDateTime()
                {
                    DateTime = DateTime.Parse(XmlConvert.ToString(DateTime.Parse(txtmeetdate.Value.ToString()), XmlDateTimeSerializationMode.Utc)), //DateTime.pr dt.ToUniversalTime().ToString("YYYY-MM-DD'T'HH:mm:ssZ"),
                    TimeZone = "Europe/Paris",
                },
                End = new EventDateTime()
                {
                    DateTime = DateTime.Parse(XmlConvert.ToString(DateTime.Parse(txtmeetdate.Value.ToString()), XmlDateTimeSerializationMode.Utc)),

                    TimeZone = "Europe/Paris",
                },
            };



            String calendarId = "primary";

            EventsResource.InsertRequest request = service.Events.Insert(newEvent, calendarId);
            Event newevent = await request.ExecuteAsync();
        }
コード例 #2
0
        public async Task <string> AddEvent(Event e, string calendar = "primary")
        {
            if (calService == null)
            {
                await Auth(EditScopes);
            }

            EventsResource.InsertRequest req = calService.Events.Insert(e, calendar);
            var ev = await req.ExecuteAsync();

            return(ev.Id);
        }
コード例 #3
0
        public async Task <ILoadedAppointment> CreateAppointmentAsync(string uniqueId, IAppointment appointmentData)
        {
            using (Logger.Scope($"GoogleCalendar.CreateAppointment(\"{appointmentData}\")"))
            {
                EventsResource.InsertRequest request = _service.Events.Insert(appointmentData.ToGoogleEvent(null, uniqueId), CalendarId);
                Event createdEvent = await request.ExecuteAsync().ConfigureAwait(false);

                Logger.Verbose($"Created new event \"{appointmentData}\" on {appointmentData.Schedule?.Start:d}");
                if (appointmentData.Schedule?.Recurrence?.Exceptions != null)
                {
                    await UpdateExceptionsAsync(createdEvent.Id, appointmentData.Schedule, true).ConfigureAwait(false);
                }

                return(new GoogleCalendarAppointment(createdEvent));
            }
        }
コード例 #4
0
        public async Task <string> SetUpEvent(DateTime eventDate, string title)
        {
            var service = new CalendarService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = User,
                ApplicationName       = "BotApp"
            });

            EventsResource.InsertRequest request = service.Events.Insert(new Event {
                Start = new EventDateTime {
                    DateTime = eventDate, TimeZone = TimeZone.CurrentTimeZone.ToString()
                }, Summary = title
            }, "primary");
            Event createdEvent = await request.ExecuteAsync();

            return(createdEvent != null ? "event created" : "something goes wrong");
        }
コード例 #5
0
        public async Task <GoogleEventModel> InsertEvent(GoogleEventModel eventModel, string calendarID)
        {
            if (!eventModel.Start.HasValue)
            {
                return(null);
            }
            var   start            = eventModel.Start.Value;
            var   service          = GetCalendarService();
            var   simpleStartDate  = new DateTime(start.Year, start.Month, start.Day, start.Hour, start.Minute, start.Second);
            var   calendartimeZone = GetCurrentCalendar(service).TimeZone;
            Event newEvent         = new Event()
            {
                Id          = eventModel.EventId,
                Summary     = eventModel.Summary,
                Location    = eventModel.Location,
                Description = eventModel.Description,
                Start       = new EventDateTime()
                {
                    DateTime = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(simpleStartDate, TZConvert.IanaToWindows(calendartimeZone)),
                    TimeZone = calendartimeZone,
                },
                End = new EventDateTime()
                {
                    DateTime = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(simpleStartDate.AddMinutes(15), TZConvert.IanaToWindows(calendartimeZone)),
                    TimeZone = calendartimeZone,
                },
                Attendees = new EventAttendee[] { new EventAttendee()
                                                  {
                                                      Email = _user.Email
                                                  } },
            };

            //newEvent.Start.DateTimeRaw = newEvent.Start.DateTime.Value.ToLongDateString();
            //newEvent.End.DateTimeRaw = newEvent.End.DateTime.Value.ToLongDateString();
            EventsResource.InsertRequest request = service.Events.Insert(newEvent, calendarID);
            Event createdEvent = await request.ExecuteAsync();

            return(createdEvent.MapToGoogleEventModel());
        }
コード例 #6
0
        public async Task AddEvent(UserVacationViewModel model, string userId)
        {
            var userToken = await _db.UserGoogleToken.FirstOrDefaultAsync(u => u.UserId == userId);

            if (userToken != null)
            {
                UserCredential credential = await GetCredential(userToken.AccessToken, userToken.RefreshToken, userToken.IssuedAt, clientId, clientSecret);

                var service = new CalendarService(new BaseClientService.Initializer()
                {
                    HttpClientInitializer = credential,
                    ApplicationName       = "Futurify Vacation",
                });

                // Define parameters of request.

                var newEvent = new Event
                {
                    Summary     = model.FirstName + " " + model.LastName,
                    Description = model.Title,
                    Start       = new EventDateTime
                    {
                        DateTime = model.Start
                    },
                    End = new EventDateTime
                    {
                        DateTime = model.End
                    },
                    ColorId = "10",
                };
                EventsResource.InsertRequest requestInsertEvent = service.Events.Insert(newEvent, calendarId);
                var insert = await requestInsertEvent.ExecuteAsync();

                model.GoogleCalendarId = insert.Id;
            }
        }
コード例 #7
0
        public async Task addEvent(CommandContext ctx)
        {
            Console.WriteLine("AddEvent");
            try
            {
                Event evt = new Event()
                {
                    AnyoneCanAddSelf = true,
                };
                var x         = DateTimeOffset.Now.Offset.Hours.ToString();
                var sender    = ctx.Message.Author;
                var dmChannel = await Startup.discord.CreateDmAsync(sender);

                await dmChannel.SendMessageAsync("What is the name of this event?");

                var sum = await Startup.interactivity.WaitForMessageAsync(xm => xm.Author == ctx.Message.Author, TimeSpan.FromMinutes(5));

                evt.Summary = sum.Message.Content;
                await dmChannel.SendMessageAsync("What Date is the start of this event? yyyy-mm-dd");

                var startDate = await Startup.interactivity.WaitForMessageAsync(xm => xm.Author == ctx.Message.Author, TimeSpan.FromMinutes(5));

                await dmChannel.SendMessageAsync("What time does this event start at? 24h hh:mm");

                var startTime = await Startup.interactivity.WaitForMessageAsync(xm => xm.Author == ctx.Message.Author, TimeSpan.FromMinutes(5));

                evt.Start = new EventDateTime()
                {
                    DateTime = DateTime.Parse($"{startDate.Message.Content}T{startTime.Message.Content}:00.0000000"),
                    TimeZone = "America/Los_Angeles"
                };
                await dmChannel.SendMessageAsync("What Date is the end of this event? yyyy-mm-dd");

                var endDate = await Startup.interactivity.WaitForMessageAsync(xm => xm.Author == ctx.Message.Author, TimeSpan.FromMinutes(5));

                await dmChannel.SendMessageAsync("What time does this event end at? 24h hh:mm");

                var endTime = await Startup.interactivity.WaitForMessageAsync(xm => xm.Author == ctx.Message.Author, TimeSpan.FromMinutes(5));

                evt.End = new EventDateTime()
                {
                    DateTime = DateTime.Parse($"{endDate.Message.Content}T{endTime.Message.Content}:00.0000000"),
                    TimeZone = "America/Los_Angeles"
                };
                await dmChannel.SendMessageAsync("Does this event repeat? true/false");

                var stor = await Startup.interactivity.WaitForMessageAsync(xm => xm.Author == ctx.Message.Author, TimeSpan.FromMinutes(5));

                var repeat = Convert.ToBoolean(stor.Message.Content);
                if (repeat)
                {
                    await dmChannel.SendMessageAsync("How often does it repeat?", false, new DiscordEmbedBuilder()
                    {
                        Description = "(0) : Daily \n (1) : Weekly \n (2) : Monthly \n (3) Yearly",
                    }.Build());

                    var stor1 = await Startup.interactivity.WaitForMessageAsync(xm => xm.Author == ctx.Message.Author, TimeSpan.FromMinutes(5));

                    var    repeatfreq = Convert.ToByte(stor1.Message.Content);
                    String freq;
                    switch (repeatfreq)
                    {
                    case 0:
                        freq = "DAILY";
                        break;

                    case 1:
                        freq = "WEEKLY";
                        break;

                    case 2:
                        freq = "MONTHLY";
                        break;

                    case 3:
                        freq = "YEARLY";
                        break;

                    default:
                        freq = "YEARLY";
                        break;
                    }
                    await dmChannel.SendMessageAsync("How many times does it repeat?");

                    var f = await Startup.interactivity.WaitForMessageAsync(xm => xm.Author == ctx.Message.Author, TimeSpan.FromMinutes(5));

                    int repeats = Convert.ToInt32(f.Message.Content);
                    evt.Recurrence = new String[] { $"RRULE:FREQ={freq};COUNT={repeats}" };
                }
                EventsResource.InsertRequest request = calendarLoad.s.Events.Insert(evt, "primary");
                Event createdEvent = await request.ExecuteAsync();

                await dmChannel.SendMessageAsync($"Event Created: {createdEvent.HtmlLink}");
            }
            catch (Exception e) { Console.WriteLine(e.Message); }
        }
コード例 #8
0
ファイル: EventREST.cs プロジェクト: visual1993/luiss-loft
        public async Task <string> UpdateEvent(GoogleEvent i, Guid OwnerGuid)
        {
            Event eventoEsistente = null;
            //verifica se fare update o insert
            var IsUpdate = (string.IsNullOrWhiteSpace(i.ID) == false);

            if (i.ID == "null")
            {
                IsUpdate = false;
            }
            if (IsUpdate == false)
            {
                EventsResource.GetRequest request = Generic.Calendar.Events.Get(MainClass.StudentsCalendar, i.ID);
                try { eventoEsistente = await request.ExecuteAsync(); } catch { }
                IsUpdate = eventoEsistente != null;
            }
            GoogleEvent.UpdateResponse output = new GoogleEvent.UpdateResponse();
            try
            {
                eventoEsistente = EventMixedFromGoogle(i, eventoEsistente);
                if (IsUpdate)
                {
                    EventsResource.UpdateRequest request = Generic.Calendar.Events.Update(
                        eventoEsistente, MainClass.StudentsCalendar, eventoEsistente.Id
                        );
                    eventoEsistente = await request.ExecuteAsync();
                }
                else
                {
                    eventoEsistente.Id = null;
                    EventsResource.InsertRequest request = Generic.Calendar.Events.Insert(
                        eventoEsistente, MainClass.StudentsCalendar
                        );
                    eventoEsistente = await request.ExecuteAsync();
                }
                if (eventoEsistente != null)
                {
                    output.item  = eventoEsistente.ToGoogleEvent();
                    output.state = Visual1993.Data.WebServiceV2.WebRequestState.Ok;
                }
            }
            catch (Exception ex) {
                output.state        = Visual1993.Data.WebServiceV2.WebRequestState.GenericError;
                output.errorMessage = ex.Message;
            }
            //manda la mail al Loft team
            //prendi le info dell'utente per la mail
            //var internalEvent = (await InternalEvent.getAllFromGoogleID(i.ID)).items.FirstOrDefault();
            //if (internalEvent == null) { output.errorMessage = "Impossibile trovare l'evento correlato"; return JsonConvert.SerializeObject(output);}
            var utente = (await User.GetOne(OwnerGuid)).items.FirstOrDefault();

            if (utente == null)
            {
                output.errorMessage = "Impossibile trovare l'utente che ha inserito l'evento"; return(JsonConvert.SerializeObject(output));
            }
            try {
                var msgStr = "<html><body>" +
                             "<p>Nome: " + i.Name + "</p>" +
                             "<p>Inizio: " + i.StartDate.ToString() + "</p>" +
                             "<p>Fine: " + i.EndDate.ToString() + "</p>" +
                             "<p>Owner: " + i.OwnerName + "</p>" +
                             "<p>Luogo: " + i.Luogo + "</p>" +
                             "<p>Descrizione: " + i.Description + "</p>" +
                             "<p><a href=\"" + MainClass.ExternalAccessBaseUri + MainClass.LoftPrefix + "event/" + i.InternalEventGuid + "/accept\">Accetta</a></p>" +
                             "<p><a href=\"" + MainClass.ExternalAccessBaseUri + MainClass.LoftPrefix + "event/" + i.InternalEventGuid + "/deny\">Rifiuta</a></p>" +
                             "</body></html>"
                ;
                var mail = new MailRESTRequest {
                    From         = utente?.data?.Email ?? null,
                    To           = MainClass.StaffMail,
                    Cc           = MainClass.StaffCcMail,
                    IsBodyHtml   = true,
                    SmtpProvider = MailRESTRequest.SmtpProviderEnum.Luiss,
                    Body         = msgStr,
                    Subject      = "Prenotazione evento Loft"
                };
                var web    = new Visual1993.Data.WebServiceV2();
                var config = new WebServiceV2.UrlToStringConfiguration
                {
                    url        = MainClass.Visual1993RestServer + "visual1993/mail/send",
                    Type       = WebServiceV2.UrlToStringConfiguration.RequestType.JsonRaw,
                    Verb       = WebServiceV2.UrlToStringConfiguration.RequestVerb.POST,
                    RawContent = JsonConvert.SerializeObject(mail)
                };
                var res = await web.UrlToString(config);

                var resAsObj = JsonConvert.DeserializeObject <WebServiceV2.DefaultResponse>(res);
                if (resAsObj.state != WebServiceV2.WebRequestState.Ok)
                {
                    output.errorMessage = "mail not sent. Error: " + resAsObj.errorMessage;
                }
                //ma non impostare lo stato a !=Ok perchè la richiesta in se è andata a buon fine
            }
            catch (Exception ex)
            {
                output.errorMessage = ex.Message;
            }
            return(JsonConvert.SerializeObject(output));
        }