public async Task <EventResponse> GetWaEventDetails(int eventId) { var apiEventResource = $"accounts/{_accountId}/events/{eventId}"; var response = new HttpResponseMessage(); var token = await GetTokenAsync(); try { response = await WildApricotOps.GetRequest(apiEventResource, token); } catch (Exception e) { Console.WriteLine(e); throw new Exception(e.Message); } var apiResponse = await response.Content.ReadAsStringAsync(); var eventDetailsReturned = Newtonsoft.Json.JsonConvert.DeserializeObject <EventResponse>(apiResponse); if (eventDetailsReturned == null) { throw new ExecutionError("Event could not be found"); } return(eventDetailsReturned); }
public async Task <int> GenerateEventRegistrationInvoice(int eventRegistrationId) { var apiEventResource = $"rpc/{_accountId}/GenerateInvoiceForEventRegistration"; var query = new List <string> { $"eventRegistrationId={eventRegistrationId}", "updateIfexists=false" }; HttpResponseMessage response; var token = await GetTokenAsync(); try { response = await WildApricotOps.PostRequest(apiEventResource, token, null, query); } catch (Exception e) { Console.WriteLine(e); throw new Exception(e.Message); } var content = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject <GenerateEventRegistrationInvoiceResponse>(content); return(result.Id); }
public async Task <WildApricotToken> GetTokenAsync() { var updateToken = false; var token = await _context.WaTokens.SingleOrDefaultAsync(); if (token != null) { var tokenExpires = token?.TokenExpires ?? DateTime.Now; if (DateTime.Compare(tokenExpires, DateTime.Now.AddMinutes(3)) > 0) { return(token); } updateToken = true; } var tokenResponse = await WildApricotOps.GenerateNewAccessToken(_apiKey); var newToken = new WildApricotToken { AccessToken = tokenResponse.access_token, TokenExpires = DateTime.Now.AddSeconds(tokenResponse.expires_in) }; return(await SetTokenAsync(newToken, updateToken)); }
public async Task <int> MarkInvoiceAsPaid(WildApricotRegistrationType registrationType, int invoiceId, int contactId) { var newInvoice = new NewInvoice { Value = registrationType.BasePrice, Invoices = new List <Invoice> { new Invoice { Id = invoiceId } }, Contact = new InvoiceContact { Id = contactId }, Comment = "Marked paid by the MITS Web application", PaymentType = "InvoicePayment" }; var contractResolver = new DefaultContractResolver { NamingStrategy = new CamelCaseNamingStrategy() }; var newInvoiceString = JsonConvert.SerializeObject(newInvoice, new JsonSerializerSettings { ContractResolver = contractResolver, }); var encodedContact = new StringContent(newInvoiceString, Encoding.UTF8, "application/json"); var apiEventResource = $"accounts/{_accountId}/payments"; HttpResponseMessage response; var token = await GetTokenAsync(); try { response = await WildApricotOps.PostRequest(apiEventResource, token, encodedContact); } catch (Exception e) { Console.WriteLine(e); throw new Exception(e.Message); } var content = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject <NewInvoiceResponse>(content); return(result.Id); }
public async Task <Contact> CreateContact(Registration newRegistration) { var newContact = new NewContact { FirstName = newRegistration.FirstName, LastName = newRegistration.LastName, Email = newRegistration.Email, Organization = newRegistration.Organization, Status = "Active", RecreateInvoice = false }; var contractResolver = new DefaultContractResolver { NamingStrategy = new CamelCaseNamingStrategy() }; var newContactString = JsonConvert.SerializeObject(newContact, new JsonSerializerSettings { ContractResolver = contractResolver, }); var encodedContact = new StringContent(newContactString, Encoding.UTF8, "application/json"); var apiEventResource = $"accounts/{_accountId}/contacts"; HttpResponseMessage response; var token = await GetTokenAsync(); try { response = await WildApricotOps.PostRequest(apiEventResource, token, encodedContact); } catch (Exception e) { Console.WriteLine(e); throw new Exception(e.Message); } var content = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject <NewContactResponse>(content); return(new Contact { FirstName = result.FirstName, LastName = result.LastName, Email = result.Email, Organization = result.Organization, Status = "Active", Id = result.Id }); }
public async Task <bool> DeleteEventRegistration(int registrationId) { var apiEventResource = $"accounts/{_accountId}/eventregistrations/{registrationId}"; HttpResponseMessage response; var token = await GetTokenAsync(); try { response = await WildApricotOps.PostRequest(apiEventResource, token); } catch (Exception e) { Console.WriteLine(e); throw new Exception(e.Message); } return(response.IsSuccessStatusCode); }
public async Task <Contact> GetContact(string email) { var apiEventResource = $"accounts/{_accountId}/contacts"; var query = new List <string> { "$async=false", $"simpleQuery={email}" }; HttpResponseMessage response; var token = await GetTokenAsync(); try { response = await WildApricotOps.GetRequest(apiEventResource, token, query); } catch (Exception e) { Console.WriteLine(e); throw new Exception(e.Message); } var content = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject <QueryContactResponse>(content); if (result.Contacts.Count == 0) { return(null); } var returnedContact = result.Contacts[0]; return(new Contact { FirstName = returnedContact.FirstName, LastName = returnedContact.LastName, Email = returnedContact.Email, Organization = returnedContact.Organization, Status = returnedContact.Status, Id = returnedContact.Id }); }
public async Task <bool> CheckInEventAttendee(int registrationId) { var newEventRegistrationCheckIn = new EventRegistrationCheckIn { RegistrationId = registrationId, CheckedIn = true }; var contractResolver = new DefaultContractResolver { NamingStrategy = new CamelCaseNamingStrategy() }; var newEventRegistrationCheckInString = JsonConvert.SerializeObject(newEventRegistrationCheckIn, new JsonSerializerSettings { ContractResolver = contractResolver, }); var encodedContact = new StringContent(newEventRegistrationCheckInString, Encoding.UTF8, "application/json"); var apiEventResource = $"rpc/{_accountId}/CheckInEventAttendee"; HttpResponseMessage response; var token = await GetTokenAsync(); try { response = await WildApricotOps.PostRequest(apiEventResource, token, encodedContact); } catch (Exception e) { Console.WriteLine(e); throw new Exception(e.Message); } var content = await response.Content.ReadAsStringAsync(); var result = content.Contains("true"); return(result); }
public async Task <EventRegistrationResponse> GetEventRegistration(int registrationId) { var apiEventResource = $"accounts/{_accountId}/eventregistrations/{registrationId}"; HttpResponseMessage response; var token = await GetTokenAsync(); try { response = await WildApricotOps.GetRequest(apiEventResource, token); } catch (Exception e) { Console.WriteLine(e); throw new Exception(e.Message); } var content = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject <EventRegistrationResponse>(content); return(result); }
public async Task <int> AddSponsorRegistration(Sponsor newSponsor, int contactId) { var newRegistrationData = new NewEventRegistration { Event = new WaEvent { Id = newSponsor.EventId }, Contact = new WaContact { Id = contactId }, RegistrationTypeId = newSponsor.RegistrationTypeId, IsCheckedIn = false, RegistrationFields = new List <RegistrationField> { new RegistrationField { FieldName = "First name", Value = newSponsor.FirstName, SystemCode = "FirstName" }, new RegistrationField { FieldName = "Last name", Value = newSponsor.LastName, SystemCode = "LastName" }, new RegistrationField { FieldName = "Title", Value = newSponsor, SystemCode = "Title" }, new RegistrationField { FieldName = "e-mail", Value = newSponsor.Email, SystemCode = "Email" }, new RegistrationField { FieldName = "Registration Terms and Conditions", Value = true, SystemCode = "custom-10687529" } }, Memo = "Event Registration Created by MITS Web App" }; var contractResolver = new DefaultContractResolver { NamingStrategy = new CamelCaseNamingStrategy() }; var newRegistrationString = JsonConvert.SerializeObject(newRegistrationData, new JsonSerializerSettings { ContractResolver = contractResolver, }); var encodedRegistration = new StringContent(newRegistrationString, Encoding.UTF8, "application/json"); var apiEventResource = $"accounts/{_accountId}/eventregistrations"; HttpResponseMessage response; var token = await GetTokenAsync(); try { response = await WildApricotOps.PostRequest(apiEventResource, token, encodedRegistration); } catch (Exception e) { Console.WriteLine(e); throw new Exception(e.Message); } var content = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject <EventRegistrationResponse>(content); return(result.Id); }