예제 #1
0
        public ActionResult Details(int complaintID)
        {
            LogginUser userLogin = GetUser();

            if (userLogin == null || complaintID == 0)
            {
                return(RedirectToAction("SignIn", "Users"));
            }
            else
            {
                ViewBag.name     = userLogin.FullName;
                ViewBag.Usertype = userLogin.UserTypeID;
            }
            using (var client = new HttpClient())
            {
                var RetrievedComplaints = new  ComplaintDetails();
                client.BaseAddress = new Uri(Baseurl);
                client.DefaultRequestHeaders.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                var Result = client.GetAsync(string.Format("api/PublicAPI/GetMyComplaintsDetailsAPI?complainID=" + complaintID)).Result;
                if (Result.IsSuccessStatusCode)
                {
                    var MyComplaintResults = Result.Content.ReadAsStringAsync().Result;
                    RetrievedComplaints = JsonConvert.DeserializeObject <ComplaintDetails>(MyComplaintResults);
                }
                return(View(RetrievedComplaints));
            }
        }
예제 #2
0
        public IActionResult ComplaintDetails(long id)
        {
            var complaint = new ComplaintDetails
            {
                Id = id
            };

            return(View(complaint));
        }
예제 #3
0
        public ActionResult ValidateEdit(ComplaintDetails Model)
        {
            LogginUser userLogin = GetUser();

            if (userLogin == null || userLogin.UserTypeID != 2)
            {
                return(RedirectToAction("SignIn", "Users"));
            }
            else
            {
                ViewBag.name     = userLogin.FullName;
                ViewBag.Usertype = userLogin.UserTypeID;
            }
            var RetrievedComplaints = new ComplaintDetails();

            ComplaintDetails _model = new ComplaintDetails();

            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(Baseurl);
                client.DefaultRequestHeaders.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                var Result = client.GetAsync(string.Format("api/PublicAPI/GetMyComplaintsDetailsAPI?complainID=" + Model.ComplaintsID)).Result;
                if (Result.IsSuccessStatusCode)
                {
                    var MyComplaintResults = Result.Content.ReadAsStringAsync().Result;
                    RetrievedComplaints = JsonConvert.DeserializeObject <ComplaintDetails>(MyComplaintResults);
                }
                List <ComplaintStatus> ComplaintStatustModel = null;
                var ComplaintStatusListAPI = client.GetAsync("api/PublicAPI/GetComplaintStatusAPI/").Result;
                if (ComplaintStatusListAPI.IsSuccessStatusCode)
                {
                    var ComplaintsStatusListIDs = ComplaintStatusListAPI.Content.ReadAsStringAsync().Result;

                    ComplaintStatustModel = JsonConvert.DeserializeObject <List <ComplaintStatus> >(ComplaintsStatusListIDs);


                    RetrievedComplaints.ComplaintStatus = (from d in ComplaintStatustModel
                                                           select new SelectListItem
                    {
                        Value = d.ComplaintStatusID.ToString(),
                        Text = d.Name.ToString()
                    }).ToList();
                }
            }

            return(View(RetrievedComplaints));
        }
        private void SendUserSuccessEmail(ComplaintDetails model, string caseResponse)
        {
            var submissionDetails = new ComplaintsMailModel()
            {
                Subject          = "We've received your formal complaint",
                Reference        = caseResponse,
                FirstName        = model.ContactDetails.FirstName,
                LastName         = model.ContactDetails.LastName,
                RecipientAddress = model.ContactDetails.EmailAddress
            };

            _mailingServiceGateway.Send(new Mail
            {
                Payload  = JsonConvert.SerializeObject(submissionDetails),
                Template = EMailTemplate.ComplaintsSuccess
            });
        }
예제 #5
0
 public ActionResult Edit(ComplaintDetails Model)
 {
     try
     {
         LogginUser userLogin = GetUser();
         if (userLogin == null || userLogin.UserTypeID != 2)
         {
             return(RedirectToAction("SignIn", "Users"));
         }
         else
         {
             ViewBag.name     = userLogin.FullName;
             ViewBag.Usertype = userLogin.UserTypeID;
         }
         if (!ModelState.IsValid)
         {
             ValidateEdit(Model);
             return(View());
         }
         using (var client = new HttpClient())
         {
             client.BaseAddress = new Uri(Baseurl);
             client.DefaultRequestHeaders.Clear();
             client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
             var EditComplaintStatusAPI = client.PostAsJsonAsync <ComplaintDetails>("api/PublicAPI/EditComplaintStatus", Model);
             EditComplaintStatusAPI.Wait();
             var EditComplaintStatusResultAPI = EditComplaintStatusAPI.Result;
             if (EditComplaintStatusResultAPI.IsSuccessStatusCode)
             {
                 var  EditComplaintStatusResult = EditComplaintStatusResultAPI.Content.ReadAsStringAsync().Result;
                 bool EditComplaintStatus       = JsonConvert.DeserializeObject <bool>(EditComplaintStatusResult);
                 return(RedirectToAction("AllComplaints", "Complaints"));
             }
         }
         return(View());
     }
     catch (Exception ex)
     {
         LoggedError(ex.Message);
         return(RedirectToAction("Users", "Index"));
     }
 }
        public MainPage()
        {
            InitializeComponent();

            SubmitButton.Clicked += async(s, e) =>
            {
                int    zipCode = 11111, DOM = 0, DOW = 0, Month = 0;
                double tmp = 0.0;

                var success = int.TryParse(Zip.Text, out zipCode) &&
                              int.TryParse(dayOfMonth.Text, out DOM) &&
                              int.TryParse(dayOfWeek.Text, out DOW) &&
                              int.TryParse(MonthNum.Text, out Month) &&
                              double.TryParse(avgTemp.Text, out tmp);

                if (!success)
                {
                    await DisplayAlert("Error in inputs", "You must enter Integers as indicated", "OK");

                    return;
                }

                var comp = new ComplaintDetails
                {
                    Agency        = Agency.Text,
                    complaintType = complaintType.Text,
                    Descriptor    = Descriptor.Text,
                    incidentZip   = zipCode,
                    dayOfMonth    = DOM,
                    dayOfWeek     = DOW,
                    Month         = Month,
                    avgTemp       = tmp
                };


                Result.Text            = "Please wait...";
                SubmitButton.IsEnabled = false;
                Exception error = null;

                try
                {
                    var req = new HttpRequestMessage(HttpMethod.Post, new Uri(Url));
                    req.Content = new StringContent(JsonConvert.SerializeObject(comp));
                    req.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                    var response = Client.SendAsync(req).Result;

                    /*var url = Url.Replace("{num1}", number1.ToString())
                     *  .Replace("{num2}", number2.ToString());
                     *
                     * HttpWebRequest req = (HttpWebRequest)WebRequest.Create(Url);
                     * req.Method = "POST";
                     * req.ContentType = "application/json";
                     * Stream stream = req.GetRequestStream();
                     * string json = "{\"name\": \"Azure\" }";
                     * byte[] buffer = Encoding.UTF8.GetBytes(json);
                     * stream.Write(buffer, 0, buffer.Length);
                     * HttpWebResponse res = (HttpWebResponse)req.GetResponse();*/



                    //var json = await Client.GetStringAsync(url);

                    string responseBody = response.Content.ReadAsStringAsync().Result;
                    var    deserialized = JsonConvert.DeserializeObject <ComplaintDetails>(responseBody);

                    TimeOnServer.Text = "Server Time: " + deserialized.TimeOnServer;
                    Result.Text       = "Estimated Time to Resolve Complaint:" + deserialized.complaintTimeToComplete.ToString();
                }
                catch (Exception ex)
                {
                    error = ex;
                }

                if (error != null)
                {
                    Result.Text = "Error!!";
                    await DisplayAlert("There was an error", error.Message, "OK");
                }

                SubmitButton.IsEnabled = true;
            };
        }
        public async Task <string> CreateComplaintCase(ComplaintDetails model)
        {
            var events = _complaintsConfig.Value.ComplaintsConfigurations;

            var eventCode = string.IsNullOrEmpty(model.CouncilDepartmentSub)
                ? events.FirstOrDefault(_ => _.EventName == model.CouncilDepartment)?.EventCode ?? events.FirstOrDefault(_ => _.EventName == "none")?.EventCode
                  : events.FirstOrDefault(_ => _.EventName == model.CouncilDepartmentSub)?.EventCode ?? events.FirstOrDefault(_ => _.EventName == "none")?.EventCode;

            var crmCase = new Case
            {
                EventCode   = (int)eventCode,
                EventTitle  = string.IsNullOrEmpty(model.OtherService) ? $"Complaint - {model.ComplainAboutService}" : $"Complaint - {model.OtherService} - {model.ComplainAboutService}",
                Description = model.ComplainAboutDetails,
                Customer    = new Customer
                {
                    Forename  = model.ContactDetails.FirstName,
                    Surname   = model.ContactDetails.LastName,
                    Email     = model.ContactDetails.EmailAddress,
                    Telephone = model.ContactDetails.PhoneNumber,
                    Address   = new Address()
                }
            };

            if (string.IsNullOrEmpty(model.ContactDetails.Address.PlaceRef))
            {
                crmCase.Customer.Address.AddressLine1 = model.ContactDetails.Address.AddressLine1;
                crmCase.Customer.Address.AddressLine2 = model.ContactDetails.Address.AddressLine2;
                crmCase.Customer.Address.City         = model.ContactDetails.Address.Town;
                crmCase.Customer.Address.Postcode     = model.ContactDetails.Address.Postcode;
            }
            else
            {
                var splitAddress = model.ContactDetails.Address.SelectedAddress.Split(",");
                crmCase.Customer.Address.AddressLine1 = splitAddress[0];
                crmCase.Customer.Address.AddressLine2 = splitAddress[1];

                if (splitAddress.Length == 5)
                {
                    crmCase.Customer.Address.AddressLine3 = splitAddress[2];
                    crmCase.Customer.Address.City         = splitAddress[3];
                    crmCase.Customer.Address.Postcode     = splitAddress[4];
                }
                else
                {
                    crmCase.Customer.Address.City     = splitAddress[2];
                    crmCase.Customer.Address.Postcode = splitAddress[3];
                }

                crmCase.Customer.Address.UPRN = model.ContactDetails.Address.PlaceRef;
            }

            try
            {
                _logger.LogWarning($"ComplaintsService.CreateComplaintCase: Attempting to create verint case. {JsonConvert.SerializeObject(crmCase)}");
                var response = await _verintServiceGateway.CreateCase(crmCase);

                SendUserSuccessEmail(model, response.ResponseContent);
                return(response.ResponseContent);
            }
            catch (Exception ex)
            {
                throw new Exception($"ComplimentsComplaintsService CreateComplimentCase an exception has occured while creating the case in verint service", ex);
            }
        }
 public async Task <HttpResponse <string> > SubmitComplaint(ComplaintDetails model)
 => await PostAsync <string>($"{ComplaintEndpoint}/submit-complaint", model);
예제 #9
0
        public static async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]
            HttpRequest req, ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request for GetComplaintTimeEstimate");

            if (req.Method.ToLower() == "post")
            {
                log.LogInformation($"POST method was used to invoke the function");
                string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
                log.LogInformation("Request Body: " + requestBody);
                dynamic b    = JsonConvert.DeserializeObject(requestBody);
                var     comp = new ComplaintDetails
                {
                    Agency        = b.Agency,
                    complaintType = b.complaintType,
                    Descriptor    = b.Descriptor,
                    incidentZip   = b.incidentZip,
                    dayOfMonth    = b.dayOfMonth,
                    dayOfWeek     = b.dayOfWeek,
                    Month         = b.Month,
                    avgTemp       = b.avgTemp,
                    TimeOnServer  = DateTime.Now
                };

                string scoringUri = "http://26c756f8-7413-4bfd-829e-296f8b139d79.eastus2.azurecontainer.io/score";
                //string authKey = "<your key or token>";

                // Set the data to be sent to the service.
                // In this case, we are sending two sets of data to be scored.
                InputData payload = new InputData();
                payload.data = new object[, ] {
                    {
                        comp.Agency,
                        comp.complaintType,
                        comp.Descriptor,
                        comp.incidentZip,
                        comp.dayOfMonth,
                        comp.dayOfWeek,
                        comp.Month,
                        comp.avgTemp
                    }
                };

                // Create the HTTP client
                HttpClient client = new HttpClient();
                // Set the auth header. Only needed if the web service requires authentication.
                //client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", authKey);

                // Make the request
                try {
                    var request = new HttpRequestMessage(HttpMethod.Post, new Uri(scoringUri));
                    request.Content = new StringContent(JsonConvert.SerializeObject(payload));
                    request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                    var response = client.SendAsync(request).Result;
                    //log.LogInformation("ML Response: " +  response.Content.ReadAsStringAsync().Result.GetType());
                    string responseBody = response.Content.ReadAsStringAsync().Result;
                    log.LogInformation("Response Body: " + responseBody);
                    responseBody = responseBody.Replace("\\\"", "\'");
                    log.LogInformation("New Response Body: " + responseBody);
                    responseBody = responseBody.Replace("\"", "");
                    log.LogInformation("New Response Body: " + responseBody);
                    dynamic r = JsonConvert.DeserializeObject(responseBody);
                    //dynamic r = JsonConvert.DeserializeObject(json);
                    //var json = JsonConvert.DeserializeObject(responseBody);
                    //dynamic r = JObject.Parse(json);
                    comp.complaintTimeToComplete = r.result[0];
                    //log.LogInformation("Result Type: " + timeResult);
                    //comp.complaintTimeToComplete = r.result;
                    //var timeResult = r.result[0];
                    // Display the response from the web service
                    //log.LogInformation("ML Response:");
                    log.LogInformation("ML Result: " + comp.complaintTimeToComplete);

                    return(new OkObjectResult(comp));
                }
                catch (Exception e)
                {
                    Console.Out.WriteLine(e.Message);
                }

                return(new BadRequestObjectResult("Error While Running"));
            }
            else
            {
                log.LogInformation("Method: " + req.Method + "was used to invoke the function");
                return(new BadRequestObjectResult("Only POST can be used"));
            }

            /*var comp = new ComplaintDetails
             * {
             *  Agency = "DEP",
             *  complaintType = "Water System",
             *  Descriptor = "Hydrant Running (WC3)",
             *  incidentZip = 11249,
             *  dayOfMonth = 31,
             *  dayOfWeek = 3,
             *  Month = 3,
             *  avgTemp = 44.78,
             *  TimeOnServer = DateTime.Now
             * };*/
        }
예제 #10
0
        public async Task <IActionResult> CreateCase([FromBody] ComplaintDetails model)
        {
            var result = await _caseService.CreateComplaintCase(model);

            return(Ok(result));
        }