public async Task <IActionResult> GetContactByToken(string code) { var id = EncryptionUtility.DecryptStringHex(code, _encryptionKey); if (!string.IsNullOrEmpty(id)) { var contactId = Guid.Parse(id); // query the Dynamics system to get the contact record. var contact = await _dynamicsClient.GetContactById(contactId); if (contact != null) { var result = new PHSContact { Id = contact.Contactid, token = code, shortName = contact.Firstname.First() + " " + contact.Lastname, isComplete = contact.AdoxioPhscomplete == (int)ViewModels.YesNoOptions.Yes }; return(new JsonResult(result)); } return(new NotFoundResult()); } return(BadRequest()); }
public void TestEncryptDecryptHex() { string key = "46f44ece-e897-47d1-8ad0-10753208d9f8"; string input = "String to encrypt."; string encrypted = EncryptionUtility.EncryptStringHex(input, key); string resultingData = EncryptionUtility.DecryptStringHex(encrypted, key); Assert.Equal(resultingData, input); }
public async Task <IActionResult> PublicGetAttachments([FromRoute] string token, [FromRoute] string entityName, [FromRoute] string documentType) { // decode the entityID var entityId = EncryptionUtility.DecryptStringHex(token, _encryptionKey); var authorized = await IsPublicUserAuthorized(entityName, entityId).ConfigureAwait(true); if (authorized) { return(await GetAttachmentsInternal(entityId, entityName, documentType, false)); } return(Unauthorized()); }
public async Task <IActionResult> PublicDownloadAttachment(string token, string entityName, [FromQuery] string serverRelativeUrl, [FromQuery] string documentType) { // decode the entityID var entityId = EncryptionUtility.DecryptStringHex(token, _encryptionKey); var authorized = await IsPublicUserAuthorized(entityName, entityId).ConfigureAwait(true); if (authorized) { return(await DownloadAttachmentInternal(entityId, entityName, serverRelativeUrl, documentType, false).ConfigureAwait(true)); } return(Unauthorized()); }
public async Task <IActionResult> UpdateContactByToken([FromBody] ViewModels.Contact item, string token) { if (token == null || item == null) { return(BadRequest()); } // get the contact var contactId = EncryptionUtility.DecryptStringHex(token, _encryptionKey); var contactGuid = Guid.Parse(contactId); var contact = await _dynamicsClient.GetContactById(contactGuid); if (contact == null) { return(new NotFoundResult()); } var patchContact = new MicrosoftDynamicsCRMcontact(); patchContact.CopyValues(item); try { await _dynamicsClient.Contacts.UpdateAsync(contactGuid.ToString(), patchContact); } catch (HttpOperationException httpOperationException) { _logger.LogError(httpOperationException, "Error updating contact"); } foreach (var alias in item.Aliases) { CreateAlias(alias, contactId); } contact = await _dynamicsClient.GetContactById(contactGuid); return(new JsonResult(contact.ToViewModel())); }
public async Task <IActionResult> GetCASSContactByToken(string code) { var id = EncryptionUtility.DecryptStringHex(code, _encryptionKey); if (!string.IsNullOrEmpty(id)) { MicrosoftDynamicsCRMcontact userContact = null; try { var userSettings = UserSettings.CreateFromHttpContext(_httpContextAccessor); userContact = await _dynamicsClient.GetContactById(userSettings.ContactId); } catch (ArgumentNullException) { // anonymous } var contactId = Guid.Parse(id); // query the Dynamics system to get the contact record. var contact = await _dynamicsClient.GetContactById(contactId); if (userContact == null) { return(new JsonResult(new CASSPublicContact { Id = contact.Contactid, token = code, shortName = contact.Firstname.First() + " " + contact.Lastname, IsWrongUser = false })); } if (contact != null && userContact.Firstname != null && contact.Firstname.StartsWith(userContact.Firstname.Substring(0, 1), true, CultureInfo.CurrentCulture) && userContact.Lastname != null && userContact.Lastname.ToLower() == contact.Lastname.ToLower() && userContact.Birthdate != null && userContact.Birthdate.Value.Date.ToShortDateString() == contact.Birthdate.Value.Date.ToShortDateString() ) { return(new JsonResult(new CASSPrivateContact { Id = contact.Contactid, token = code, shortName = contact.Firstname + " " + contact.Lastname, dateOfBirth = contact.AdoxioDateofbirthshortdatestring, gender = ((ViewModels.Gender?)contact.AdoxioGendercode).ToString(), streetAddress = contact.Address1Line1, city = contact.Address1City, province = contact.Address1Stateorprovince, postalCode = contact.Address1Postalcode, country = contact.Address1Country })); } return(new JsonResult(new CASSPublicContact { Id = contact.Contactid, token = code, shortName = contact.Firstname.First() + " " + contact.Lastname, IsWrongUser = true })); } return(BadRequest()); }