Beispiel #1
0
        public void SendRequest_Pender()
        {
            var controller = new HomeController();
            var obj        = new Models.ServiceInput()
            {
                latitude = "+48.8277", longitude = "-123.3646335"
            };
            var result = controller.Index(obj) as ViewResult;

            Models.ServiceInput res = (Models.ServiceInput)result.Model;
            Assert.AreEqual("Pender/Galiano/Saturna/Mayne", res.result);
        }
Beispiel #2
0
        public void SendRequest_Sooke()
        {
            var controller = new HomeController();
            var obj        = new Models.ServiceInput()
            {
                latitude = "+48.4251378", longitude = "-123.711"
            };
            var result = controller.Index(obj) as ViewResult;

            Models.ServiceInput res = (Models.ServiceInput)result.Model;
            Assert.AreEqual("Sooke", res.result);
        }
Beispiel #3
0
        public void SendRequest_Cowichan()
        {
            var controller = new HomeController();
            var obj        = new Models.ServiceInput()
            {
                latitude = "+48.8277", longitude = "-123.711"
            };
            var result = controller.Index(obj) as ViewResult;

            Models.ServiceInput res = (Models.ServiceInput)result.Model;
            Assert.AreEqual("Central Cowichan", res.result);
        }
Beispiel #4
0
        public void SendRequest_Downtown()
        {
            var controller = new HomeController();
            var obj        = new Models.ServiceInput()
            {
                latitude = "+48.4251378", longitude = "-123.3646335"
            };
            var result = controller.Index(obj) as ViewResult;

            Models.ServiceInput res = (Models.ServiceInput)result.Model;
            Assert.AreEqual("Downtown Victoria/Vic West", res.result);
        }
        public ActionResult Index(Models.ServiceInput model)
        {
            var    res     = ServiceResult.NONE;
            string message = "";

            try
            {
                if (ModelState.IsValid)
                {
                    //model.latitude = "+48.4251378";
                    //model.longitude = "-123.3646335";

                    if (!string.IsNullOrEmpty(model.latitude) && !string.IsNullOrEmpty(model.longitude))
                    {
                        message = model.result = getServiceResponse(model);
                        res     = ServiceResult.OK;

                        // Event Log:
                        db.EventLogs.Add(new Models.EventLog()
                        {
                            vAction = "GET", vInput = model.cql_filter, vOutput = message, iResult = (int)res, dProcessTimestamp = DateTime.UtcNow, vClientInfo = ""
                        });
                        db.SaveChanges();
                    }
                    else
                    {
                        model.result = "";
                    }
                }
            }
            catch (Exception ex)
            {
                model.result = "[!] Error";
                message      = ex.Message;
                res          = ServiceResult.ERR;

                // Event Log:
                db.EventLogs.Add(new Models.EventLog()
                {
                    vAction = "GET", vInput = model.cql_filter, vOutput = message, iResult = (int)res, dProcessTimestamp = DateTime.UtcNow, vClientInfo = ""
                });
                db.SaveChanges();
            }

            return(View("Index", model));
        }
        private string getServiceResponse(Models.ServiceInput model)
        {
            try
            {
                string uriApi = ConfigurationManager.AppSettings["ServiceEndpoint"] + ConfigurationManager.AppSettings["ServiceResource"];

                using (var client = new HttpClient())
                {
                    client.BaseAddress = new Uri(uriApi);
                    client.DefaultRequestHeaders.Accept.Clear();
                    client.Timeout = new TimeSpan(0, 0, 0, 90);

                    string uriString    = uriApi + string.Format("?service={0}&version={1}&request={2}&typeName={3}&srsname={4}&cql_filter={5}&propertyName={6}&outputFormat={7}", model.service, model.version, model.request, model.typeName, model.srsname, model.cql_filter, model.propertyName, model.outpuFormat);
                    var    responseTask = client.GetAsync(uriString);
                    responseTask.Wait();

                    var response = responseTask.Result;

                    if (response.IsSuccessStatusCode)
                    {
                        var jsonData = (response.Content.ReadAsStringAsync()).Result;
                        Models.ServiceOutput result = JsonConvert.DeserializeObject <Models.ServiceOutput>(jsonData);

                        foreach (var item in result.features)
                        {
                            if (item.properties != null)
                            {
                                return(item.properties.CMNTY_HLTH_SERV_AREA_NAME);
                            }
                        }
                        throw new Exception("[!] Invalid data structure!");
                    }
                    else
                    {
                        throw new Exception("[!] Wrong Response!");
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }