using BLL.DAL;
using Common;
using Json;
using Lib;
using Model;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Web.Mvc;
using System.Web.Script.Serialization;

namespace wms.Areas.BasicInfo.Controllers
{
    public class RegionController : MasterPage
    {
        // GET: BasicInfo/Region
        [LoginFilter]
        public ActionResult Index()
        {
            return View();
        }

        [LoginFilter]
        public ActionResult AddEdit() 
        {
            try
            {
                string RegionCode = Request.QueryString.Get("RegionCode");
                DALRegion dALRegion = new DALRegion();
                

                if (RegionCode != null)
                {
                    Region region = dALRegion.getRegion(RegionCode);

                    ViewBag.RegionCode = region.RegionCode;
                    ViewBag.RegionName = region.RegionName;
                    ViewBag.Demo = region.Demo;
                }
                else
                {
                    ViewBag.RegionCode = "";
                    ViewBag.RegionName = "";
                    ViewBag.Demo = "";
                }

                return View();
            }
            catch (System.Exception)
            {
                return View();
            }
        }

        [LoginFilter]
        public ActionResult Delete() 
        {
            return View();
        }
    }

    public class RegionAjaxController : AjaxPage 
    {
        public ActionResult GetRegionItems() 
        {
            try
            {
                var dd = Request["ajaxdata"];
                var regionItems = new JavaScriptSerializer().Deserialize<QueryRegion>(dd);
                if (regionItems != null)
                {
                    // 实例化分页信息
                    PageInfo pageInfo = new PageInfo()
                    {
                        PageIndex = regionItems.pageIndex,
                        PageSize = regionItems.pageSize
                    };

                    // 数据库交互,获取区域集合and分页信息。
                    DALRegion provider = new DALRegion();
                    List<Region> entity = provider.GetRegionItems(regionItems, ref pageInfo).ToList();

                    // Data =》json
                    string json = JsonHelper.IListToJson<Region>(entity, "List");
                    string pjson = ConvertJson.Serializer(pageInfo);

                    // controller => view
                    ReturnJson.AddProperty("Result", new JsonObject(json));
                    ReturnJson.AddProperty("PageInfo", new JsonObject(pjson));
                    ReturnJson.AddProperty("Code", 1);
                    ReturnJson.AddProperty("Message", "加载区域集合成功!");

                    return Content(this.ReturnJson.ToString());
                }

                return Content(null);
            }
            catch (System.Exception)
            {
                return Content(null);
            }
        }

        public ActionResult SetRegions() 
        {
            try
            {
                var dd = Request["ajaxdata"];
                var regionItems = new JavaScriptSerializer().Deserialize<SetRegion>(dd);
                if (regionItems != null)
                {
                    // 数据库交互
                    DALRegion provider = new DALRegion();
                    if (provider.SetRegions(regionItems,this.LoginUserCode))
                    {
                        ReturnJson.AddProperty("Code", 1);
                        ReturnJson.AddProperty("Message", "保存成功!");
                    }
                    else
                    {
                        ReturnJson.AddProperty("Code", 1);
                        ReturnJson.AddProperty("Message", "保存失败!");
                    }
                }

                return Content(this.ReturnJson.ToString());
            }
            catch (System.Exception)
            {
                return Content(null);
            }
        }

        public ActionResult DelRegions() 
        {
            try
            {
                string dd = Request["list"];
                ArrayList models = new JavaScriptSerializer().Deserialize<ArrayList>(dd);
                string[] list = (string[])models.ToArray(typeof(string));

                if (models != null)
                {
                    // 数据库交互
                    DALRegion provider = new DALRegion();
                    if (provider.DelRegions(list,this.LoginUserCode))
                    {
                        ReturnJson.AddProperty("Code", 1);
                        ReturnJson.AddProperty("Message", "删除成功!");
                    }
                    else
                    {
                        ReturnJson.AddProperty("Code", 1);
                        ReturnJson.AddProperty("Message", "删除失败!");
                    }
                }

                return Content(this.ReturnJson.ToString());
            }
            catch (System.Exception)
            {
                return Content(null);
            }
        }

        public ActionResult IsExist() 
        {
            var dd = Request["ajaxdata"];
            var regionItems = new JavaScriptSerializer().Deserialize<SetRegion>(dd);
            DALRegion provider = new DALRegion();
            bool bl = provider.IsExist(regionItems);

            ReturnJson.AddProperty("Result", bl.ToString());

            return Content(this.ReturnJson.ToString());
        }
    }
}