public async Task <GoogleEventModel> UpdateEvent(GoogleEventModel eventModel, string calendarID) { if (!eventModel.Start.HasValue) { return(null); } var start = eventModel.Start.Value; var service = GetCalendarService(); var calendartimeZone = GetCurrentCalendar(service).TimeZone; var simpleStartDate = new DateTime(start.Year, start.Month, start.Day, start.Hour, start.Minute, start.Second); Event gEvent = new Event { Id = eventModel.EventId, Summary = eventModel.Summary, Location = eventModel.Location, Description = eventModel.Description, Start = new EventDateTime() { DateTime = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(simpleStartDate, TZConvert.IanaToWindows(calendartimeZone)), }, End = new EventDateTime() { DateTime = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(simpleStartDate.AddMinutes(15), TZConvert.IanaToWindows(calendartimeZone)), } }; //gEvent.Start.DateTimeRaw = gEvent.Start.DateTime.Value.ToLongDateString(); //gEvent.End.DateTimeRaw = gEvent.End.DateTime.Value.ToLongDateString(); EventsResource.UpdateRequest request = service.Events.Update(gEvent, calendarID, gEvent.Id); Event UpdatedEvent = await request.ExecuteAsync(); return(UpdatedEvent.MapToGoogleEventModel()); }
public async Task UpdateEvent(Event e, string calendar = "primary") { if (calService == null) { await Auth(EditScopes); } EventsResource.UpdateRequest req = calService.Events.Update(e, calendar, e.Id); await req.ExecuteAsync(); }
private async Task <ILoadedAppointment> UpdateAppointmentAsync(string id, int?sequence, IAppointment appointmentData, bool force) { EventsResource.UpdateRequest request = _service.Events.Update(appointmentData.ToGoogleEvent(sequence + 1), CalendarId, id); Event updatedEvent = await request.ExecuteAsync().ConfigureAwait(false); string description = updatedEvent.RecurringEventId != null ? "instance of a recurring event" : updatedEvent.Recurrence != null ? "recurring event" : "event"; Logger.Verbose($"Updated {description} \"{appointmentData}\" on {appointmentData.Schedule?.Start:d}"); if (appointmentData.Schedule?.Recurrence?.Exceptions != null) { await UpdateExceptionsAsync(updatedEvent.Id, appointmentData.Schedule, force).ConfigureAwait(false); } return(new GoogleCalendarAppointment(updatedEvent)); }
public async Task ApproveVacation(UserVacationViewModel model, int vacationId) { var userEvent = await _db.UserVacations.FirstOrDefaultAsync(u => u.Id == vacationId); var userToken = await _db.UserGoogleToken.FirstOrDefaultAsync(u => u.UserId == userEvent.UserId); if (userEvent != null && 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 = "Day Off: Approved", Description = model.Title, Start = new EventDateTime { DateTime = model.Start }, End = new EventDateTime { DateTime = model.End }, ColorId = "10", }; EventsResource.UpdateRequest approveEvent = service.Events.Update(newEvent, calendarId, userEvent.GoogleCalendarId); //"primary" approveEvent.SendNotifications = true; var approve = await approveEvent.ExecuteAsync(); } }
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)); }
private async void updateevent() { 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/calendarupdate-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; DateTime d = Convert.ToDateTime(txtdoe.Value); DateTimeOffset t = DateTimeOffset.Parse(txttime.Value); dt = new DateTime(d.Year, d.Month, d.Day, t.Hour, t.Minute, t.Second); Event old = service.Events.Get("primary", eID).Execute(); old.Summary = txtesummary.Value; old.Location = txteLocation.Value; old.Description = txtedesc.Value; old.Start.DateTime = DateTime.Parse(XmlConvert.ToString(dt, XmlDateTimeSerializationMode.Utc)); old.Start.TimeZone = TimeZone.CurrentTimeZone.ToString(); old.End.DateTime = DateTime.Parse(XmlConvert.ToString(dt, XmlDateTimeSerializationMode.Utc)); old.End.TimeZone = TimeZone.CurrentTimeZone.ToString(); Event newEvent = new Event() { Summary = txtesummary.Value, Location = txteLocation.Value, Description = txtedesc.Value, Start = new EventDateTime() { DateTime = DateTime.Parse(dt.ToString()),//DateTime.pr dt.ToUniversalTime().ToString("YYYY-MM-DD'T'HH:mm:ssZ"), TimeZone = "Europe/Paris", }, End = new EventDateTime() { DateTime = DateTime.Parse(dt.ToString()), // DateTime = DateTime.Parse(datetimepicker1.Value), TimeZone = "Europe/Paris", }, }; String calendarId = "primary"; EventsResource.UpdateRequest request = service.Events.Update(newEvent, calendarId, eID); Event newevent = await request.ExecuteAsync(); UserData user = (UserData)Session["User"]; Dataservice.DatamanagementClient findata = new Dataservice.DatamanagementClient(); findata.Open(); eID = Request.QueryString.Get("eid"); object[] eventdetails = findata.getevent(eID, user.getID()); int getnum = findata.updateevent(dt, txtesummary.Value, txteLocation.Value, txtedesc.Value, newevent.Id.ToString(), (string)eventdetails[0]); findata.Close(); }