GetLevelsRiversController.cs 6.1 KB
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using Newtonsoft.Json.Linq;
using ControlPanel.Models;
using System.Runtime.Serialization;
using ControlPanel.LogicLayers;
using System.Xml;
using System.Net;

namespace SourceRoute.Controllers
{
    public class GetLevelsRiversController : ApiController
    {
        // GET api/getlevelsrivers
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }

        // GET api/getlevelsrivers/5
        public string Get(int id)
        {
            return "value";
        }

        // POST api/getlevelsrivers
      
        public JObject Post(JObject data)
        {
            List<LevelRiver> res=new List<LevelRiver>();
            List<Route> lstRoute = new List<Route>();
            List<Agk> lstAgk = new List<Agk>();
            List<LevelRiversEmpty> lstLevelRiverEmpty = new List<LevelRiversEmpty>();



            try
            {
                var lst = data["data"];
                var RegKey = data["RegKey"];
                var vers = data["SoftVersion"];

                LogicLiveSubscribers.instance.UpdateStatusSubscriver(RegKey.ToString(), vers.ToString());

                try
                {

                    foreach (var p in lst)
                    {
                        dynamic json = JValue.Parse(p.ToString());

                        LevelRiversEmpty obj = new LevelRiversEmpty
                        {
                            id_agk = json.id_agk,
                            dt = json.dt,
                            status = json.status
                        };

                        lstLevelRiverEmpty.Add(obj);
                    }

                    // Получаем маршруты для данного СЗС
                    lstRoute = LogicRouts.instance.GetRoutsByRegKey(RegKey.ToString());

                    // Получаем список АГК 

                    foreach (Route route in lstRoute)
                    {
                        Agk agk = LogicAgk.instance.GetById(route.RefRouteAgk.id);

                        lstAgk.Add(agk);
                    }
                }
                catch (Exception)
                {

                }

                res = LogicLevelsRivers.instance.GetActualLevelRivers(lstRoute);

         

            }
            catch (Exception ex)
            {
           
                

            }

            // Подготовим  для отправки 

            List<AgkForSzs> lstAgkForSzs = new List<AgkForSzs>();

            foreach (Agk agk in lstAgk)
            {
                lstAgkForSzs.Add( new AgkForSzs { 
                           number=agk.number, 
                           river=agk.river, 
                           latitude=agk.latitude,
                           longitude=agk.longitude,
                           enabled=true
                     });
            }

            List<LevelRiverForSzs> lstLevelForSzs = new List<LevelRiverForSzs>();

            foreach (LevelRiver levelriver in res)
            {

                Agk objagk = LogicAgk.instance.GetById(levelriver.RefMessageAgk.id);



                        lstLevelForSzs.Add(new LevelRiverForSzs
                        {
                            id = levelriver.id,
                            id_agk = objagk.number,
                            datetimedevice = levelriver.datetimedevice,
                            datetimeveracity = levelriver.datetimeveracity,
                            datetimeserver = levelriver.datetimeserver,
                            latitude = levelriver.latitude,
                            longitude = levelriver.longitude,
                            coordveracity = levelriver.coordveracity,
                            installplace = levelriver.installplace,
                            levelbsv = levelriver.levelbsv,
                            levelpointsuspen = levelriver.levelpointsuspen,
                            levelzeropost = levelriver.levelzeropost,
                            causeevent = levelriver.causeevent,
                            isconfirm = false

                        });
            }


            string softversion="";
            try 
            {
                   var SoftVersion = data["SoftVersion"];
                softversion=SoftVersion.ToString();

            }
            catch(Exception) 
            {
            }


            JObject result= JObject.FromObject(new
            {
                levelsrivers = lstLevelForSzs,
                agks=lstAgk,
                softversion = GetInfoNewVersion(softversion)
                
            });


            //  Обновляем поле S2 в таблице Event для каждого сообщения 
            LogicEvents.instance.UpdateFieldS2(lstRoute,res);
    

            return result;

        }




        private bool GetInfoNewVersion(string versionsoft)
        {

            bool flag = false;

            try
            {
               

                XmlDocument xml = new XmlDocument();
                xml.Load(@"C:\SzsWeb\version.xml");
                if (xml != null)
                {
                    foreach (XmlElement element in xml.GetElementsByTagName("info"))
                    {
                        foreach (XmlElement e in element)
                        {
                            if (e.Name.CompareTo("version") == 0)
                            {
                                string version = e.InnerText.Trim();

                                if (versionsoft != version)
                                    flag = true;

                            }
                        }
                    }
                };


            }
            catch (Exception)
            {

            }



            return flag;


        }



















        // PUT api/getlevelsrivers/5
        public void Put(int id, [FromBody]string value)
        {
        }

        // DELETE api/getlevelsrivers/5
        public void Delete(int id)
        {
        }
    }
}