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

namespace wms.Areas.BasicInfo.Controllers
{
    public class DepotsAreaController : MasterPage
    {
        // GET: BasicInfo/DepotsArea
        [LoginFilter]
        public ActionResult Index()
        {
            //ViewBag.Region = LocalHelper.GetRegionItemsHtml();
            ViewBag.Title = "库区管理";
            return View();
        }

        [LoginFilter]
        public ActionResult AddEdit()
        {
            try
            {
                string Guid = Request.QueryString.Get("Guid");
                DALDepotsArea dALDepotsArea = new DALDepotsArea();

                if (Guid != null)
                {
                    DepotsArea depotsArea = dALDepotsArea.GetDepotsAreaItems(Guid)[0];

                    ViewBag.DepotsCode = depotsArea.DepotsCode;
                    ViewBag.DepotsName = depotsArea.DepotsName;
                    //ViewBag.RegionId = LocalHelper.GetRegionItemsHtml(depotsArea.RegionID);
                    ViewBag.DepotsRow = depotsArea.DepotsRow;
                    ViewBag.DepotsColumn = depotsArea.DepotsColumn;
                    ViewBag.DepotsLayer = depotsArea.DepotsLayer;
                    ViewBag.Demo = depotsArea.Demo;
                    //ViewBag.InStorageLocation = depotsArea.InStorageLocation;       // 下拉框待完善
                    //ViewBag.OutStorageLocation = depotsArea.OutStorageLocation;     // 下拉框待完善
                }
                else
                {
                    ViewBag.DepotsCode = "";
                    ViewBag.DepotsName = "";
                    //ViewBag.RegionId = LocalHelper.GetRegionItemsHtml();
                    ViewBag.Demo = "";
                    //ViewBag.InStorageLocation = "";       // 下拉框待完善
                    //ViewBag.OutStorageLocation = "";     // 下拉框待完善
                }

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

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

                    // 数据库交互,获取库区集合and分页信息。
                    DALDepotsArea provider = new DALDepotsArea();
                    List<DepotsArea> entity = provider.GetDepotsAreaItems(modelItems, ref pageInfo).ToList();

                    // Data =》json
                    string json = JsonHelper.IListToJson<DepotsArea>(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 SetDepotsAreas()
        {
            try
            {
                var dd = Request["ajaxdata"];
                var depotsItems = new JavaScriptSerializer().Deserialize<SetDepotsArea>(dd);
                if (depotsItems != null)
                {
                    // 数据库交互
                    DALDepotsArea provider = new DALDepotsArea();
                    if (provider.SetDepotsAreas(depotsItems, 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 DelDepotsAreas()
        {
            try
            {
                string dd = Request["list"];
                ArrayList models = new JavaScriptSerializer().Deserialize<ArrayList>(dd);
                string[] list = (string[])models.ToArray(typeof(string));

                if (models != null)
                {
                    // 数据库交互
                    DALDepotsArea provider = new DALDepotsArea();
                    if (provider.DelDepotsAreas(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 depotsItems = new JavaScriptSerializer().Deserialize<SetDepotsArea>(dd);
            DALDepotsArea provider = new DALDepotsArea();
            bool bl = provider.IsExist(depotsItems);

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

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