using Ant.Data;
using Ant.ORM;
using Ant.SuperSocket.Common;
using Ant.Service.Common;
using Ant.Service.Common.Enums;
using Central.Control.Domain;
using MES.Production.Entity;
using MES.Production.Entity.Entity;
using MES.Production.Entity.Enum;
using Ant.Service.Mongodb;
using MES.Production.Service.IService;
using MES.Production.Service.ServiceImp;
using Ant.Service.Utility;
using ChangFa.Machinery.WebPage.Areas.SysManage.Models;
using ChangFa.Machinery.WebPage.Controllers;
using MongoDB.Driver.Builders;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Objects.SqlClient;
using System.IO;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Mvc;
using JsonHelper = Ant.Service.Common.JsonHelper;

namespace ChangFa.Machinery.WebPage.Areas.SysManage.Controllers
{
    public class ProjectEntryController : BaseController
    {
        public ActionResult ProjectEntryList(string SEPID, string SCID,string State)
        {
            try
            {

                PageInfo pageInfo = new PageInfo(base.page, base.pagesize, 0, JsonConverter.JsonClass(new List<YW_ProjectEntry>()));

                #region 加载列表
                using (AntORM orm = new AntORM())
                {
                    orm.db = DataAccessFactory.CreateDataConnection("CyclingItem");
                    RequestModel res = new RequestModel();
                    res.newSt = new SqlNote() { Author = "季健国", NewSt = new System.Diagnostics.StackTrace(true), SqlDesc = "获取项目规则列表" };

                    var judgeList = orm.Queryable<YW_ProjectEntry>();

                    int pageno = (base.page - 1) * base.pagesize;
                    ViewData["SEPID"] = SEPID;
                    ViewData["SCID"] = SCID;
                    ViewData["State"] = State;

                    //var SCID = Request["SCID"];
                    //var SEPID = Request["SEPID"];
                    judgeList = judgeList.Where(p => p.SCID == SCID && p.SEPID == SEPID);

                    var reslut = judgeList.OrderByDesc(p => p.CreateDate).Skip(pageno).Top(pagesize).ToList(res);

                    //var reslut = coachList.OrderByDesc(p => p.UpdateTime).Skip(pageno).Top(pagesize).ToList(res);

                    if (reslut.IsSuccess)
                    {
                        reslut.RecordNum = judgeList.Count();

                        pageInfo = new PageInfo(base.page, base.pagesize, reslut.RecordNum, JsonConverter.JsonClass(reslut.ResultModel));

                    }

                    RequestModel request = new RequestModel
                    {
                        newSt = new SqlNote() { Author = "季健国", NewSt = new System.Diagnostics.StackTrace(true), SqlDesc = "查询组别的单个实体方法" },
                        Oid = SCID
                    };
                    var rsp = orm.GetEntity<YW_EntryConditions>(request);
                    if (rsp.IsSuccess)
                    {
                        ViewBag.ConditionsName = rsp.ResultModel.Constituencies;
                    }
                    else
                    {
                        ViewBag.ConditionsName = string.Empty;
                    }
                }
                return View(pageInfo);
                #endregion

            }
            catch (Exception e)
            {
                WriteLog(enumOperator.Select, "获取参赛列表:", e);
                throw e.InnerException;
            }
        }

        public ActionResult Delete(string idList)
        {
            JsonHelper json = new JsonHelper() { Status = "n", Msg = "删除项目规则成功" };
            try
            {
                //是否为空
                if (string.IsNullOrEmpty(idList)) { json.Msg = "未找到要删除的项目规则"; return Json(json); }
                string[] id = idList.Trim(',').Split(',');
                for (int i = 0; i < id.Length; i++)
                {
                    var userId = (id[i]);
                    using (AntORM orm = new AntORM())
                    {

                        orm.db = DataAccessFactory.CreateDataConnection("CyclingItem");
                        RequestModel request = new RequestModel
                        {
                            newSt = new SqlNote() { Author = "季健国", NewSt = new System.Diagnostics.StackTrace(true), SqlDesc = "删除项目规则" },
                            Oid = userId.ToString()
                        };
                        var reslut = orm.DeleteById<YW_ProjectEntry>(request);
                        if (reslut.IsSuccess)
                        {
                            int ecid = userId.ToInt32();
                            var reportreslut = orm.DeleteByLambda<YW_MatchReport>(p => p.PEID == ecid, request);
                            json.Status = "y";
                            WriteLog(enumOperator.Remove, json.Msg, enumLog4net.WARN);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                json.Msg = "删除项目规则发生内部错误!";
                WriteLog(enumOperator.Remove, "删除项目规则:", e);
            }
            return Json(json);
        }

        [ValidateInput(false)]
        [HttpPost]
        public ActionResult Save(YW_ProjectEntry entity)
        {
            JsonHelper json = new JsonHelper() { Msg = "保存项目规则成功", Status = "n", ReUrl = "/Sys/ProjectEntry/ProjectEntryList" };
            try
            {
                if (entity.BoysMum > 0 || entity.GirlsMum > 0)
                {
                    if (entity.MixedMum > 0)
                    {
                        json.Msg = "混合和男女不能同时填写!";
                        return Json(json);
                    }
                }
                using (AntORM orm = new AntORM())
                {
                    orm.db = DataAccessFactory.CreateDataConnection("CyclingItem");
                    RequestModel request = new RequestModel();
                    request.newSt = new SqlNote() { Author = "季健国", NewSt = new System.Diagnostics.StackTrace(true), SqlDesc = "保存项目规则" };
                    if (entity.ID > 0)
                    {
                        var reslut = orm.UpdateByLambda<YW_ProjectEntry>(p => new YW_ProjectEntry { MixedMum = entity.MixedMum, GirlsMum = entity.GirlsMum, BoysMum = entity.BoysMum }, p => p.ID == entity.ID, request);
                        if (reslut.IsSuccess)
                        {
                            json.Status = "y";
                        }
                        else
                        {
                            json.Msg = "保存项目规则失败";
                        }
                    }
                    else
                    {
                        entity.Createper = this.CurrentUser.Name;
                        entity.CreateDate = DateTime.Now;

                        var reslut = orm.Save(entity, request);
                        if (reslut.IsSuccess)
                        {
                            json.Status = "y";
                        }
                        else
                        {
                            json.Msg = "保存项目规则失败";
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                json.Msg = "保存项目规则发生内部错误!";
                WriteLog(enumOperator.None, "保存项目规则:", ex);
            }

            return Json(json);
        }

        public ActionResult Detail(int? id, string conditionsName)
        {
            YW_ProjectEntry mod = new YW_ProjectEntry();

            if (id != null)
            {
                using (AntORM orm = new AntORM())
                {
                    try
                    {
                        orm.db = DataAccessFactory.CreateDataConnection("CyclingItem");
                        RequestModel request = new RequestModel
                        {
                            newSt = new SqlNote() { Author = "季健国", NewSt = new System.Diagnostics.StackTrace(true), SqlDesc = "查询项目规则的单个实体方法" },
                            Oid = id.ToString()
                        };
                        var reslut = orm.GetEntity<YW_ProjectEntry>(request);
                        if (reslut.IsSuccess)
                        {
                            mod = reslut.ResultModel;
                        }
                    }
                    catch (Exception e)
                    {

                    }
                }
            }
            ViewData["conditionsName"] = conditionsName;

            return View(mod);
        }
    }
}