public async Task <LoadStatusNotificationsData> GetLoadStatusNotificationsAsync() { const string mediaType = "application/json"; httpClient.DefaultRequestHeaders.Clear(); httpClient.DefaultRequestHeaders.Accept.Clear(); httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(mediaType)); httpClient.DefaultRequestHeaders.Add("Authorization", userContext.Token); var url = $"{config.GetValue<string>("MobileApiAddress")}t2g/api/Notification/OnStatusChangeV2/LSShipper"; var responseMessage = await httpClient.GetAsync(url, default(CancellationToken)); var responseString = await responseMessage.Content.ReadAsStringAsync(); var response = JsonConvert.DeserializeObject <VisibilityResponseModel <GetLoadStatusNotificationResponseModel> >(responseString); var result = mapper.Map <LoadStatusNotificationsData>(response.ResponsePayload); if (result == null) { // user hasn't subscribed to any notifications result = new LoadStatusNotificationsData(); } return(result); }
public async Task <IActionResult> UpdateLoadStatusNotifications([FromBody] LoadStatusNotificationsData notificationsData) { await securityService.GuardActionAsync(SecurityActions.Loadshop_Ui_Profile_LoadStatusNotifications); var response = await visibilityProxyService.UpdateLoadStatusNotificationsAsync(notificationsData); if (response.Successful) { return(Success(notificationsData)); } else { var problemDetails = new ValidationProblemDetails(response.ModelState) { Title = "Error updating Load status notifications", Detail = "One or more errors occurred when updating the load status notifications. See form for error details", Status = (int)HttpStatusCode.BadRequest, Instance = $"urn:kbxl:error:{Guid.NewGuid()}" }; return(BadRequest(problemDetails)); } }
public async Task <SaveLoadStatusNotificationsResponse> UpdateLoadStatusNotificationsAsync(LoadStatusNotificationsData notificationsData) { const string mediaType = "application/json"; httpClient.DefaultRequestHeaders.Clear(); httpClient.DefaultRequestHeaders.Accept.Clear(); httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(mediaType)); httpClient.DefaultRequestHeaders.Add("Authorization", userContext.Token); var url = $"{config.GetValue<string>("MobileApiAddress")}t2g/api/Notification/OnStatusChange/LSShipper"; var payload = mapper.Map <VisibilityNotificationRegistrationModel>(notificationsData); payload.Sender = LoadshopSenderCode; // currently don't support these payload.IsMobilePush = false; payload.IsWebPush = false; if (!string.IsNullOrEmpty(payload.PhoneNumber)) { payload.PhoneNumber = payload.PhoneNumber.Replace("(", string.Empty); payload.PhoneNumber = payload.PhoneNumber.Replace(")", string.Empty); payload.PhoneNumber = payload.PhoneNumber.Replace("-", string.Empty); payload.PhoneNumber = payload.PhoneNumber.Replace(" ", string.Empty); payload.PhoneNumber = payload.PhoneNumber.Trim(); } var formdata = JsonConvert.SerializeObject(payload, new JsonSerializerSettings() { ContractResolver = new CamelCasePropertyNamesContractResolver() }); var jsonContent = new StringContent(formdata, Encoding.UTF8, mediaType); var responseMessage = await httpClient.PostAsync(url, jsonContent, default(CancellationToken)); var responseString = await responseMessage.Content.ReadAsStringAsync(); var response = JsonConvert.DeserializeObject <VisibilityResponseModel <bool> >(responseString); var result = new SaveLoadStatusNotificationsResponse() { Successful = response.Successful }; if (!result.Successful) { foreach (var error in response.Errors) { result.AddError(ErrorPrefix, error.Message); } } return(result); }