Map

финальный вариант перед сдачей дописал комментарии к тому

6/12/2019 6:51:46 PM

Details

diff --git a/web-map/App_Data/Config/Config.xml b/web-map/App_Data/Config/Config.xml
index fbcae20..9bfbfab 100644
--- a/web-map/App_Data/Config/Config.xml
+++ b/web-map/App_Data/Config/Config.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <ConfigManager xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-  <SPARQL_Query_Endpoint>http://jena.denhome.keenetic.link/map/query</SPARQL_Query_Endpoint>
-  <SPARQL_Change_Endpoint>http://jena.denhome.keenetic.link/map/update</SPARQL_Change_Endpoint>
+  <SPARQL_Query_Endpoint>http://jena.denhome.keenetic.link/test/query</SPARQL_Query_Endpoint>
+  <SPARQL_Change_Endpoint>http://jena.denhome.keenetic.link/test/update</SPARQL_Change_Endpoint>
   <ModeratorName>sstu</ModeratorName>
   <ModeratorPassword>sstu</ModeratorPassword>
 </ConfigManager>
\ No newline at end of file
diff --git a/web-map/Controllers/MapController.cs b/web-map/Controllers/MapController.cs
index b79110a..4c223aa 100644
--- a/web-map/Controllers/MapController.cs
+++ b/web-map/Controllers/MapController.cs
@@ -22,6 +22,18 @@ namespace web_map.Controllers
         public FileResult ExportInfo(string data, string type)
         {
             //WebDataManager webData = WebDataManager.Get();
+
+            //  Я так и не успел реализовать возможность экспорта в формат эксель поэтому тут просто создается ворд файл
+            //  параметр type принимает два занчения: "word" или "excel"
+            //  для создания ворд файла используется бибилотека DocX
+            //  для создания эксель файла подключена библиотека EPPlus, которая не используется
+            //  созданием документа занимается DocXWrite из пространства имен Tools.Word проекта Tools
+            //  рекомендую создать там пространство имен Tools.Excel , какой-либо соотвествующий класс
+            //  и реализовать вывод данных в эксель формат
+            //
+            //  переменная inputList содержит список всех переданных url основных поселений которые нужно экспортировать
+            //  для большей ионфорации рекомендую просмотреть класс DocXWrite
+
             var inputList = data.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries).ToList<string>();
             var infoList = new List<ModelData.BusinessModel.MainEntities.Settlement>(inputList.Count);
 
@@ -39,46 +51,85 @@ namespace web_map.Controllers
         [HttpPost]
         public JsonResult ImportForm(string formData, string type)
         {
+            string result = "";
             if (User.Identity.IsAuthenticated)
             {
+                WebDataManager webData = WebDataManager.Get();
+
+                var inputArray = formData.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
+                Dictionary<string, string> form = new Dictionary<string, string>();
+                string key, value;
+                foreach (var elem in inputArray)
+                {
+                    key = elem.Split('~')[0];
+                    value = elem.Split('~')[1];
+                    if (value == "null" || value == null)
+                        value = "";
+                    form.Add(key, value);
+                }
+
+                //  Здесь параметр type указывает, нужно создать/изменить информацию об измененном или основном поселении
+                //  параметр принимает два значения: "origin-import" - основное поселение ИЛИ "edited-import" - измененное поселение
+                //  параметр formData содержит переданные из формы значения, которые уникальны для каждого из двух типов
+                //  
+                //  в результате в переменную form запишутся все распарсенные значения, полученные с формы
+                //  
+                //  дальше, в зависимости от типа, нужно произвести проверку на наличие сущностей в онтологии (sparql запрос ask), добавить или удалить+добавить сведения в онтологию
+                //  придется воспользоваться запросом на получения крайнего числа в url записи изменных поселений этот запрос выглядит вот так:
+                //SELECT (MAX(?value) AS ?maxValue)
+                //WHERE
+                //{
+                //  ?editedSettlement a map: EditedSettlement.
+                //   BIND(str(?editedSettlement) as ? str)
+                //  BIND(xsd: int(SUBSTR(?str, strlen(?str) - 3, 4)) as ? value)
+                //}
+                //  полученное число - крайнее для всех изменных поселений поэтому для нового изменного поселения нужно сделать +1
+                //  вид url для изменных поселений такой: ИмяОсновногоПоселенияXXXX, где XXXX - число от 0000 до 9999 которое значит сквозную нумерацию всех изменных поселений (вопросы к разработчику онтологии)
+                //  например: Saratov0023 Saratov0178 Sergeevka1234
+                //
+                //  если нужно добавить новое основное поселение придется прибегнуть к генерации URL.
+                //  в переданной форме будет название поселения, которое преобразуем транслитерацией в url.
+                //  модуль транслитерации находится в проекте Tools в пространстве имен Tools. обращение такое: Tools.Translit.TranslitFromRussian(строка)
+                //  создаем url такого вида: Название_Название+координаты без точек_origin
+                //  название берем из транслитерации, координаты записываем без точек просто подряд цифры в последовательность long,lat (долгота, широта)
+                //  потом нижнее подчеркивание _ и приписка origin
+                //  например: Kaluga_Kaluga4716670951371835_origin где lat = 51.371835 long = 47.166709
+
+                //  все преобразования url, проверки ask и тд. лучше делать в BusinessDataManager, т.е. перекинуть полученные данные в WebDataManager, оттуда в Business, там сформировать полный набор параметров
+                //  параметры передать в RDFQuery, составить запрос в Queries, получить ответ от точки доступа и передать ответ сюда
+                //  ответ распарсить и отправить клиенту в переменной result
+
+                //  Я ВСЕ ЭТО СПРОЕКТИРОВАЛ, НО СЛЕГКА НЕ ХВАТИЛО ВРЕМЕНИ ДЛЯ РЕАЛИЗАЦИИ (12.06.2019), желаю удачи если кто-то это будет доделывать
 
+                result = "Success";
+                //result = "Failure|ErrorMessage";
             }
-            WebDataManager webData = WebDataManager.Get();
-
-            var inputArray = formData.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
-            Dictionary<string, string> form = new Dictionary<string, string>();
-            string key, value;
-            foreach (var elem in inputArray)
-            {
-                key = elem.Split('~')[0];
-                value = elem.Split('~')[1];
-                if (value == "null" || value == null)
-                    value = "";
-                form.Add(key, value);
-            }
+            else
+                result = "Failure|Пользователь не авторизован.";
 
-            return Json("Import success", JsonRequestBehavior.AllowGet);
+            return Json(result, JsonRequestBehavior.AllowGet);
         }
 
         [HttpPost]
         public JsonResult DeleteSettlement(string type, string url)
         {
-            if (User.Identity.IsAuthenticated)
-            {
-
-            }
-            WebDataManager webData = WebDataManager.Get();
-
             string result = "";
-            if (new Random().Next(2) == 0)
+            if (User.Identity.IsAuthenticated)
             {
-                result = "Success";
+                //  Здесь примерно такие же проблемы, как описанные выше, поэтому можно читать там
+                //  Удаление не реализовано, но вся его суть - сформировать sparql запрос, получить ответ и отправить ответ на клиентскую часть
+                WebDataManager webData = WebDataManager.Get();
+                if (new Random().Next(2) == 0)
+                {
+                    result = "Success";
+                }
+                else
+                {
+                    result = "Failure|ErrorMessage";
+                }
             }
             else
-            {
-                result = "Failure|ErrorMessage";
-            }
-
+                result = "Failure|Пользователь не авторизован.";
             return Json(result, JsonRequestBehavior.AllowGet);
         }