/// <summary> /// Website example. /// </summary> public static void Example6() { using (var client = _factory.CreateChannel()) { var contactResult = client.ContactGet(ApiKey, SiteKey, new ContactRequest { ExternalIdentifier = ExternalId }); var website = new WebsiteRequest { ContactId = contactResult.Id, Url = "http://blog.johanv.org", WebsiteType = WebsiteType.Main }; var result = client.WebsiteSave(ApiKey, SiteKey, website); website.Id = result.Values.First().Id; Console.WriteLine("Website added for contact with ContactID {0} (external ID {1})", contactResult.Id, ExternalId); Console.WriteLine("You might want to check that. Then press enter."); Console.ReadLine(); Debug.Assert(website.Id != null); client.WebsiteDelete(ApiKey, SiteKey, new DeleteRequest(website.Id.Value)); Console.WriteLine("Website was deleted again."); } }
public IActionResult DenyWebsiteRequest(DenyWebsiteRequest inputModel) { EditWebsiteRequestModel outputModel = new EditWebsiteRequestModel(); ObjectResult output = StatusCode(500, error.DenyWebsiteRequest); if (authProvider.IsAdmin()) { WebsiteRequest wr = websiteRequestDAL.Get(inputModel.WebsiteRequest.Id); if (wr == null) { output = StatusCode(404, error.NotFound); } else { outputModel.SuccessfullyDeleted = websiteRequestDAL.Delete(wr.Id); if (outputModel.SuccessfullyDeleted) { outputModel.EmailSent = emailProvider.WebsiteRequestDenied(inputModel); output = StatusCode(200, outputModel); } else { output = StatusCode(500, outputModel); } } } else { output = StatusCode(401, error.NotAdmin); } return(output); }
public void ChainedPhoneAnd2WebsitesCreate() { using (var client = TestHelper.ClientGet()) { // Create a contact, chain phone and website. var myPhone1 = new PhoneRequest { PhoneNumber = "03-100 20 00" }; var myPhone2 = new PhoneRequest { PhoneNumber = "03-100 20 01" }; var myWebsite1 = new WebsiteRequest { Url = "http://smurf.com" }; var myWebsite2 = new WebsiteRequest { Url = "http://smurf.org" }; var result = client.ContactSave(TestHelper.ApiKey, TestHelper.SiteKey, new ContactRequest { ContactType = ContactType.Individual, LastName = "Smurf", FirstName = "Smul", ExternalIdentifier = "Test_External_Smurf", ApiOptions = new ApiOptions { Match = "external_identifier" }, WebsiteSaveRequest = new List <WebsiteRequest> { myWebsite1, myWebsite2 }, PhoneSaveRequest = new List <PhoneRequest> { myPhone1, myPhone2 }, }); // This crashes because of upstream issue CRM-15815: Assert.IsNotNull(result.Id); // Get contact with websites var contact = client.ContactGetSingle(TestHelper.ApiKey, TestHelper.SiteKey, new ContactRequest { Id = result.Id.Value, PhoneGetRequest = new PhoneRequest(), WebsiteGetRequest = new WebsiteRequest(), }); // Delete contact before doing assertions. client.ContactDelete(TestHelper.ApiKey, TestHelper.SiteKey, new DeleteRequest(result.Id.Value), 1); Assert.AreEqual(result.Id, contact.Id); Assert.AreEqual(2, contact.PhoneResult.Count); Assert.AreEqual(myPhone1.PhoneNumber, contact.PhoneResult.Values.First().PhoneNumber); Assert.AreEqual(myPhone2.PhoneNumber, contact.PhoneResult.Values.Last().PhoneNumber); Assert.AreEqual(2, contact.WebsiteResult.Count); Assert.AreEqual(myWebsite1.Url, contact.WebsiteResult.Values.First().Url); Assert.AreEqual(myWebsite2.Url, contact.WebsiteResult.Values.Last().Url); } }
private async Task <Website> GetEntity(WebsiteRequest request, string path = null) { var filePath = await _fileService.UploadImage(request.HomepageSnapshot, path); var password = _passwordHashService.HashWithSaltPassword(request.Login.Password); var entity = _mapper.RequestToEntity(request, filePath, password); return(entity); }
public IActionResult CompleteWebsiteRequest(int wrid) { WebsiteRequest wr = websiteRequestDAL.Get(wrid); websiteRequestDAL.Delete(wr.Id); emailProvider.WebsiteRequestComplete(wr); return(View(wr)); }
public async Task <IActionResult> UpdateWebsite([FromQuery] int id, [FromBody] WebsiteRequest command) { var result = await _websiteHandler.HandleUpdateRequest(id, command); if (!result.IsSuccess) { return(NotFound(result.Fail)); } return(Ok()); }
public void WorkaroundCrm15815() { using (var client = TestHelper.ClientGet()) { // Create a contact, chain phone and website. var myPhone = new PhoneRequest { PhoneNumber = "03-100 20 00" }; var myWebsite1 = new WebsiteRequest { Url = "http://smurf.com" }; var myWebsite2 = new WebsiteRequest { Url = "http://smurf.org" }; const string myExternalId = "Test_External_Smurf"; client.ContactSaveWorkaroundCrm15815(TestHelper.ApiKey, TestHelper.SiteKey, new ContactRequest { ContactType = ContactType.Individual, LastName = "Smurf", FirstName = "Smul", ExternalIdentifier = myExternalId, ApiOptions = new ApiOptions { Match = "external_identifier" }, WebsiteSaveRequest = new List <WebsiteRequest> { myWebsite1, myWebsite2 }, PhoneSaveRequest = new List <PhoneRequest> { myPhone }, }); // Get contact with websites var contact = client.ContactGetSingle(TestHelper.ApiKey, TestHelper.SiteKey, new ContactRequest { ExternalIdentifier = myExternalId, PhoneGetRequest = new PhoneRequest(), WebsiteGetRequest = new WebsiteRequest(), }); // Delete contact before doing assertions. client.ContactDelete(TestHelper.ApiKey, TestHelper.SiteKey, new DeleteRequest(contact.Id), 1); Assert.AreEqual(1, contact.PhoneResult.Count); Assert.AreEqual(myPhone.PhoneNumber, contact.PhoneResult.Values.First().PhoneNumber); Assert.AreEqual(2, contact.WebsiteResult.Count); Assert.AreEqual(myWebsite1.Url, contact.WebsiteResult.Values.First().Url); Assert.AreEqual(myWebsite2.Url, contact.WebsiteResult.Values.Last().Url); } }
public WebsiteRequest GenerateWebsiteRequest() { Regex regex = new Regex(@"(http(s)?:\/\/)|(\/.*){1}", RegexOptions.IgnoreCase | RegexOptions.ECMAScript); WebsiteRequest wr = new WebsiteRequest() { BaseURL = regex.Replace(URL, "").ToString(), FullURL = URL }; return(wr); }
public void ChainedWebsiteCreateTwo() { using (var client = TestHelper.ClientGet()) { // Create a contact, chain website. var my1StWebsite = new WebsiteRequest { Url = "http://smurf.com" }; var my2NdWebsite = new WebsiteRequest { Url = "http://salsaparilla.org" }; var newContact = new ContactRequest { ContactType = ContactType.Individual, LastName = "Smurf", FirstName = "Smul", ExternalIdentifier = "Test_External_Smurf", ApiOptions = new ApiOptions { Match = "external_identifier" }, WebsiteSaveRequest = new List <WebsiteRequest> { my1StWebsite, my2NdWebsite }, }; var result = client.ContactSave(TestHelper.ApiKey, TestHelper.SiteKey, newContact); Debug.Assert(result.Id.HasValue); // Get contact with websites var contact = client.ContactGetSingle(TestHelper.ApiKey, TestHelper.SiteKey, new ContactRequest { Id = result.Id.Value, WebsiteGetRequest = new WebsiteRequest() }); Assert.IsNotNull(contact.Id); // Clean up first (delete contact), then do other assertions. // (So the contact gets deleted even if the assertions fail.) client.ContactDelete(TestHelper.ApiKey, TestHelper.SiteKey, new DeleteRequest(contact.Id), 1); Assert.IsNotNull(contact.Id); Assert.AreEqual(newContact.ExternalIdentifier, contact.ExternalIdentifier); Assert.AreEqual(2, contact.WebsiteResult.Count); Assert.IsTrue(contact.WebsiteResult.Values.Any(ws => ws.Url == my1StWebsite.Url)); Assert.IsTrue(contact.WebsiteResult.Values.Any(ws => ws.Url == my2NdWebsite.Url)); } }
public void ChainedOptionsWebsite() { using (var client = TestHelper.ClientGet()) { // Create a contact with two websites. var myWebsite1 = new WebsiteRequest { Url = "http://smurf1.com" }; var myWebsite2 = new WebsiteRequest { Url = "http://smurf2.com" }; var saveResult = client.ContactSave(TestHelper.ApiKey, TestHelper.SiteKey, new ContactRequest { ContactType = ContactType.Individual, LastName = "Smurf", FirstName = "Smul", ExternalIdentifier = "Test_External_Smurf", ApiOptions = new ApiOptions { Match = "external_identifier" }, WebsiteSaveRequest = new List <WebsiteRequest> { myWebsite1, myWebsite2 }, }); Assert.IsNotNull(saveResult.Id); // Get contact with websites, order them backwards, and retrieve only one. var contact = client.ContactGetSingle(TestHelper.ApiKey, TestHelper.SiteKey, new ContactRequest { Id = saveResult.Id.Value, WebsiteGetRequest = new WebsiteRequest { ApiOptions = new ApiOptions { Sort = "url DESC", Limit = 1 } } }); // Delete contact before doing assertions. client.ContactDelete(TestHelper.ApiKey, TestHelper.SiteKey, new DeleteRequest(saveResult.Id.Value), 1); Assert.AreEqual(1, contact.WebsiteResult.Count); Assert.AreEqual(myWebsite2.Url, contact.WebsiteResult.Values.First().Url); } }
public void CreateWebsite() { using (var client = TestHelper.ClientGet()) { var website = new WebsiteRequest { ContactId = _myContactId, Url = "http://blog.johanv.org", WebsiteType = WebsiteType.Main }; var result = client.WebsiteSave(TestHelper.ApiKey, TestHelper.SiteKey, website); Assert.AreEqual(0, result.IsError); Assert.AreEqual(website.ContactId, result.Values.First().ContactId); Assert.AreEqual(website.Url, result.Values.First().Url); Assert.AreEqual(website.WebsiteType, result.Values.First().WebsiteType); } }
public bool NewWebsiteRequest(WebsiteRequest wr) { bool output = false; foreach (User admin in GetAdmins()) { to = new MailboxAddress(admin.DisplayName, admin.Email); message.To.Add(to); message.Subject = $"{wr.User.DisplayName} is requesting a new website to be added to Let's Eat Import."; body.HtmlBody = $"<h1>Hi {admin.DisplayName}</h1><p>The user {wr.User.DisplayName} just tried to import a recipe from {wr.BaseURL}. You should add this website asap and mark it as completed.</p>"; message.Body = body.ToMessageBody(); output = Connect() && Send() ? true : false; } return(output); }
public List <WebsiteRequest> GetNewWebsiteRequests() { List <WebsiteRequest> output = new List <WebsiteRequest>(); try { using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); SqlCommand cmd = new SqlCommand(SQL_Get_New_Websites, conn); SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { WebsiteRequest wr = new WebsiteRequest(); wr.Id = Convert.ToInt32(reader["id"]); wr.BaseURL = Convert.ToString(reader["base_url"]); wr.FullURL = Convert.ToString(reader["full_url"]); wr.User = new User() { Id = Convert.ToInt32(reader["user_id"]) }; output.Add(wr); } reader.Close(); foreach (WebsiteRequest wr in output) { wr.User = userDAL.GetUser(wr.User.Id, conn); } } } catch { output = null; } return(output); }
public void ChainedWebsiteCreate() { using (var client = TestHelper.ClientGet()) { // Create a contact, chain website. var myWebsite = new WebsiteRequest { Url = "http://smurf.com" }; var result = client.ContactSave(TestHelper.ApiKey, TestHelper.SiteKey, new ContactRequest { ContactType = ContactType.Individual, LastName = "Smurf", FirstName = "Smul", ExternalIdentifier = "Test_External_Smurf", ApiOptions = new ApiOptions { Match = "external_identifier" }, WebsiteSaveRequest = new List <WebsiteRequest> { myWebsite } }); Debug.Assert(result.Id.HasValue); // Get contact with websites var contact = client.ContactGetSingle(TestHelper.ApiKey, TestHelper.SiteKey, new ContactRequest { Id = result.Id.Value, WebsiteGetRequest = new WebsiteRequest() }); Assert.AreEqual(result.Id, contact.Id); Assert.AreEqual(1, contact.WebsiteResult.Count); Assert.AreEqual(myWebsite.Url, contact.WebsiteResult.Values.First().Url); // Delete contact client.ContactDelete(TestHelper.ApiKey, TestHelper.SiteKey, new DeleteRequest(result.Id.Value), 1); } }
public void OffsetOption() { using (var client = TestHelper.ClientGet()) { var website1 = new WebsiteRequest { ContactId = _myContactId, Url = "http://blog.johanv.org", WebsiteType = WebsiteType.Main }; var website2 = new WebsiteRequest { ContactId = _myContactId, Url = "http://civicrm.org", WebsiteType = WebsiteType.Main }; var website3 = new WebsiteRequest { ContactId = _myContactId, Url = "http://www.chiro.be", WebsiteType = WebsiteType.Main }; client.WebsiteSave(TestHelper.ApiKey, TestHelper.SiteKey, website1); client.WebsiteSave(TestHelper.ApiKey, TestHelper.SiteKey, website2); client.WebsiteSave(TestHelper.ApiKey, TestHelper.SiteKey, website3); var result = client.WebsiteGet(TestHelper.ApiKey, TestHelper.SiteKey, new WebsiteRequest { ContactId = _myContactId, ApiOptions = new ApiOptions { Sort = "url", Offset = 2 } }); Assert.AreEqual(0, result.IsError); Assert.AreEqual(1, result.Count); Assert.AreEqual(website3.Url, result.Values.First().Url); } }
public IActionResult ParseUrl(ParseURLForm form) { ObjectResult output = StatusCode(500, error.ParseUrl); if (authProvider.IsLoggedIn) { User currentUser = authProvider.GetCurrentUser(); if (form.IsSupportedWebsite()) { Recipe newRecipe = form.Parse(); newRecipe.UserWhoAdded = currentUser; newRecipe = recipeDAL.AddRecipe(newRecipe); if (newRecipe != null) { output = StatusCode(200, newRecipe); } } else { WebsiteRequest wr = form.GenerateWebsiteRequest(); wr.User = currentUser; websiteRequestDAL.AddNewWebsiteRequest(wr); emailProvider.NewWebsiteRequest(wr); output = StatusCode(501, wr); } } else { output = StatusCode(401, error.NotLoggedIn); } return(output); }
public IActionResult ParseUrl(ParseURLForm form) { if (authProvider.IsLoggedIn) { User currentUser = authProvider.GetCurrentUser(); if (form.IsSupportedWebsite()) { Recipe newRecipe = form.Parse(); newRecipe.UserWhoAdded = currentUser; newRecipe = recipeDAL.AddRecipe(newRecipe); if (newRecipe != null) { return(RedirectToAction("Recipe", new { id = newRecipe.ID })); } else { return(View("Error")); } } else { WebsiteRequest wr = form.GenerateWebsiteRequest(); wr.User = currentUser; websiteRequestDAL.AddNewWebsiteRequest(wr); emailProvider.NewWebsiteRequest(wr); return(View("WebsiteRequestAdded", wr)); } } else { return(RedirectToAction("Login", "Account")); } }
public WebsiteRequest Get(int id) { WebsiteRequest output = new WebsiteRequest(); try { using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); SqlCommand cmd = new SqlCommand(SQL_Get_Request_By_ID, conn); cmd.Parameters.AddWithValue("@id", id); SqlDataReader reader = cmd.ExecuteReader(); if (reader.Read()) { output.Id = Convert.ToInt32(reader["id"]); output.BaseURL = Convert.ToString(reader["base_url"]); output.FullURL = Convert.ToString(reader["full_url"]); output.User = new User() { Id = Convert.ToInt32(reader["user_id"]) }; } reader.Close(); output.User = userDAL.GetUser(output.User.Id, conn); } } catch { output = null; } return(output); }
public bool WebsiteRequestComplete(WebsiteRequest wr) { bool output = false; try { to = new MailboxAddress(wr.User.DisplayName, wr.User.Email); message.To.Add(to); message.Subject = $"Your request to add {wr.BaseURL} to our recipe import is complete!"; body.HtmlBody = $"<h1>Hi {wr.User.DisplayName}</h1><p>Thank you for your patience while we added the capability to import recipes from {wr.BaseURL}. I am glad to inform you that this website has now been added to Let's Eat! You can now try and import this recipe again, as a reminder the recipe you were trying to add was <a href='{wr.FullURL}'>located here.</a></p> <p>Thanks again for your patience!</p><p>- Let's Eat Admin Team</p>"; message.Body = body.ToMessageBody(); output = Connect() && Send() ? true : false; } catch { output = false; } return(output); }
public bool AddNewWebsiteRequest(WebsiteRequest newRequest) { bool output = true; try { using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); SqlCommand cmd = new SqlCommand(SQL_Add_New_Website_Request, conn); cmd.Parameters.AddWithValue("@base_url", newRequest.BaseURL); cmd.Parameters.AddWithValue("@full_url", newRequest.FullURL); cmd.Parameters.AddWithValue("@user_id", newRequest.User.Id); cmd.ExecuteNonQuery(); } } catch { output = false; } return(output); }
public async Task <IActionResult> CreateWebsite([FromBody] WebsiteRequest command) { await _websiteHandler.HandleCreateRequest(command); return(Ok()); }
public async Task <Result <int, ErrorResponse> > HandleUpdateRequest(int websiteId, WebsiteRequest request) { var initialEntity = await _websiteRepositoty.GetById(websiteId); if (initialEntity is null) { return(Utility.ErrorResponseInt()); } var entity = await GetEntity(request, initialEntity.FilePath); await _websiteRepositoty.Update(entity); return(new Result <int, ErrorResponse> { IsSuccess = true }); }
public async Task HandleCreateRequest(WebsiteRequest request) { var entity = await GetEntity(request); await _websiteRepositoty.Create(entity); }