namespace BLL
{
    using System.Collections.Generic;
    using System.Linq;
    using Model;

    public static class ProjectSetMapService
    {
        public static Model.SGGLDB db = Funs.DB;

        /// <summary>
        ///获取项目坐标点
        /// </summary>
        /// <returns></returns>
        public static List<string> GetProjectGpsPointByProjectId(string projectId)
        {
            return Funs.DB.WxProjectGpsPoint.Where(x => x.ProjectId == projectId).OrderBy(x => x.Orders).Select(x => x.Point).ToList();
        }
        public static List<string> GetProjectGpsPointByGpsAreId(string gpsAreId)
        {
            return Funs.DB.WxProjectGpsPoint.Where(x => x.GpsAreId == gpsAreId).OrderBy(x => x.Orders).Select(x => x.Point).ToList();
        }
        public static WxProjectGpsAre GetProjectGpsAreByGpsAreId(string gpsAreId)
        {
            return Funs.DB.WxProjectGpsAre.Where(x => x.GpsAreId == gpsAreId).FirstOrDefault();
        }
        public static void AddProjectGpsAre(WxProjectGpsAre area)
        {
            Funs.DB.WxProjectGpsAre.InsertOnSubmit(area);
            Funs.DB.SubmitChanges();
        }
        public static void UpdateProjectGpsAre(WxProjectGpsAre area)
        {
            var old = Funs.DB.WxProjectGpsAre.Where(x => x.GpsAreId == area.GpsAreId).FirstOrDefault();
            old.ProjectId = area.ProjectId;
            old.GpsAreName = area.GpsAreName;
           
            Funs.DB.SubmitChanges();
        }
        public static void DelProjectGpsAre(string gpsAreId)
        {
            var old = Funs.DB.WxProjectGpsPoint.Where(x => x.GpsAreId == gpsAreId).ToList();
            Funs.DB.WxProjectGpsPoint.DeleteAllOnSubmit(old);
            var oldArea = Funs.DB.WxProjectGpsAre.Where(x => x.GpsAreId == gpsAreId).FirstOrDefault();
            if (oldArea != null)
            {
                Funs.DB.WxProjectGpsAre.DeleteOnSubmit(oldArea);
            }
            Funs.DB.SubmitChanges();
        }
        /// <summary>
        /// 保存项目坐标范围
        /// </summary>
        public static void SaveProjectGpsPoint(string projectId, string projectPointResult)
        {
            SGGLDB db = Funs.DB;
            string strGpsAreId = SQLHelper.GetNewID();
            var getGpsAre = db.WxProjectGpsAre.FirstOrDefault(x => x.ProjectId == projectId);
            if (getGpsAre != null)
            {
                strGpsAreId = getGpsAre.GpsAreId;
            }
            else
            {
                WxProjectGpsAre newAre = new WxProjectGpsAre
                {
                    GpsAreId = strGpsAreId,
                    GpsAreName = ProjectService.GetProjectNameByProjectId(projectId),
                    ProjectId = projectId,
                    Enabled = "Y",
                };
                db.WxProjectGpsAre.InsertOnSubmit(newAre);
                db.SubmitChanges();
            }

            var getPoints = db.WxProjectGpsPoint.Where(x => x.ProjectId == projectId && x.GpsAreId == strGpsAreId);
            if (getPoints.Count() > 0)
            {
                db.WxProjectGpsPoint.DeleteAllOnSubmit(getPoints);
                db.SubmitChanges();
            }
            var listPoints = Funs.GetStrListByStr(projectPointResult, '|');
            if (listPoints.Count() > 0)
            {
                int intOrders = 1;
                foreach (var item in listPoints)
                {
                    if (!string.IsNullOrEmpty(item))
                    {
                        WxProjectGpsPoint newPoint = new WxProjectGpsPoint
                        {
                            LocationId = SQLHelper.GetNewID(),
                            Point = item,
                            ProjectId = projectId,
                            GpsAreId = strGpsAreId,
                            Orders = intOrders,
                        };
                        db.WxProjectGpsPoint.InsertOnSubmit(newPoint);
                        db.SubmitChanges();
                        intOrders++;
                    }
                }
            }
        }


        /// <summary>
        /// 保存项目坐标范围
        /// </summary>
        public static void SaveProjectGpsPoint(string projectId, string gpsAreId, string projectPointResult)
        {
            SGGLDB db = Funs.DB;
            
            var getPoints = db.WxProjectGpsPoint.Where(x => x.GpsAreId == gpsAreId);
            if (getPoints.Count() > 0)
            {
                db.WxProjectGpsPoint.DeleteAllOnSubmit(getPoints);
                db.SubmitChanges();
            }
            var listPoints = Funs.GetStrListByStr(projectPointResult, '|');
            if (listPoints.Count() > 0)
            {
                int intOrders = 1;
                foreach (var item in listPoints)
                {
                    if (!string.IsNullOrEmpty(item))
                    {
                        WxProjectGpsPoint newPoint = new WxProjectGpsPoint
                        {
                            LocationId = SQLHelper.GetNewID(),
                            Point = item,
                            ProjectId = projectId,
                            GpsAreId = gpsAreId,
                            Orders = intOrders,
                        };
                        db.WxProjectGpsPoint.InsertOnSubmit(newPoint);
                        db.SubmitChanges();
                        intOrders++;
                    }
                }
            }
        }


    }
}