//根据ShopGroup,进行PersonShopGroupPBs的排班插入
 public void ShopGroupPB(ShopGroups ShopGroup, UserWorkDate WorkDate, Kf_DepartMent kf_DepartMent)
 {
     if (ShopGroup.WorkDayOrNight != DayOrNight.全天)
     {
         PersonShopGroupPBs personShopGroupPBs = new PersonShopGroupPBs();
         personShopGroupPBs.WorkDayOrNight = ShopGroup.WorkDayOrNight;
         personShopGroupPBs.UserWorkDate   = WorkDate;
         personShopGroupPBs.UpdateTime     = System.DateTime.Now.Date;
         personShopGroupPBs._ShopGroups    = ShopGroup;
         personShopGroupPBs._User          = this.getAvailableUser(ShopGroup, personShopGroupPBs.WorkDayOrNight, WorkDate);
         this.Save(personShopGroupPBs);
     }
     else
     {
         for (int t = 0; t < 2; t++)
         {
             PersonShopGroupPBs personShopGroupPBs = new PersonShopGroupPBs();
             if (t == 0)
             {
                 personShopGroupPBs.WorkDayOrNight = DayOrNight.白班;
             }
             else
             {
                 personShopGroupPBs.WorkDayOrNight = DayOrNight.晚班;
             }
             personShopGroupPBs.UserWorkDate = WorkDate;
             personShopGroupPBs.UpdateTime   = System.DateTime.Now.Date;
             personShopGroupPBs._ShopGroups  = ShopGroup;
             personShopGroupPBs._User        = this.getAvailableUser(ShopGroup, personShopGroupPBs.WorkDayOrNight, WorkDate);
             this.Save(personShopGroupPBs);
         }
     }
 }
 public ActionResult Add_ShopGroupDetail(ShopGroups gp, string[] ids)
 {
     if (ids != null && ids.Length > 0)
     {
         var listShopGroupDetail = this.shopGroupDetailRepo.GetAll()
                                   .Where(it => it._ShopGroup == gp);
         foreach (var ShopGroupDetail in listShopGroupDetail)
         {
             shopGroupDetailRepo.Delete(ShopGroupDetail);
         }
         string strContentShops = "";
         for (int i = 0; i < ids.Length; i++)
         {
             ShopGroupDetails gd = new ShopGroupDetails()
             {
                 //_Shop = new Shop { ID = ids[i].ToInt() },
                 _Shop      = this.shopRepo.GetByDatabaseID(ids[i].ToInt()),
                 _ShopGroup = gp,
                 UpdateTime = DateTime.Now
             };
             shopGroupDetailRepo.Save(gd);
             strContentShops = strContentShops + gd._Shop.Name.Trim() + " | ";
         }
         strContentShops = strContentShops.Substring(0, strContentShops.Trim().Length - 1);
         gp.UpdateTime   = System.DateTime.Now;
         gp.ContentShops = strContentShops;
         this.ShopGroupRepo.Update(gp);
         return(Json(new { state = true, message = "添加或修改成功, 请刷新显示" }));
     }
     else
     {
         return(Json(new { state = false, message = "请选择店铺" }));
     }
 }
        public ActionResult Add_ShopGroupDetail(string id)
        {
            ShopGroups shopGroup = this.ShopGroupRepo.GetByDatabaseID(Convert.ToInt32(id));
            //根据shopGroupID取出哪些店铺在shopGroupDetail里面,在前台显示的时候如果在里面的,那么默认为选中。
            List <ShopGroupDetails> listShopGroupDetails = this.shopGroupDetailRepo.GetAll()
                                                           .Where(it => it._ShopGroup == shopGroup)
                                                           .ToList();

            ViewData["listShopGroupDetails"] = listShopGroupDetails;
            ViewData["shopGroup"]            = shopGroup;
            var list = shopRepo.GetData(this.Users().DepartMent.ID);

            return(View(list));
        }
        public string checkPersonShopGroupValid(ShopGroups shopGroup)
        {
            string strResult = "";
            //坚持班组在班组客服表中有无数据,如果有数据,则返回有效,如果没有数据,返回班组没有客服
            //List<ShopGroups> listShopGroup = this.ShopGroupRepo.GetAll().ToList();
            int intCount = this.GetAll()
                           .Where(it => it._ShopGroups == shopGroup)
                           .Count();

            if (intCount == 0)
            {
                strResult = "班组" + shopGroup.ShopGroupName.Trim() + "没有客服,请检查后再排班!";
                return(strResult);
            }
            strResult = "班组客服有效";
            return(strResult);
        }
        public ActionResult AddShopGroup(int?id)
        {
            Kf_DepartMentRepository      kf_DepartRepo  = new Kf_DepartMentRepository();
            IEnumerable <SelectListItem> listDepartMent = kf_DepartRepo.GetData(this.Users().DepartMent.ID)
                                                          .Select(p => new SelectListItem
            {
                Text  = p.DepartMentName,
                Value = p.ID.ToString().Trim(),
            });

            ViewData["listDepartMent"] = listDepartMent;
            if (id != null)
            {
                ShopGroups shopGroup = this.ShopGroupRepo.GetByDatabaseID(id.Value);
                return(View(shopGroup));
            }
            return(View());
        }
        //根据排班的内容返回可以排班的人员
        private User getAvailableUser(ShopGroups ShopGroup, DayOrNight dayOrNight, UserWorkDate WorkDate)
        {
            //取出都是哪些人能做这个班组。
            //目前只安排了第一个值班的人员,接下来要考虑的问题:
            //(1)不安排连班,如果该人员已经值该天的白班了,那么该人员不安排晚班了。
            //(2)不安排重复的值班类型的班组,也就是如果值一个白班班组了,那么就不能再排其他班组的白班。如果已经值一个晚班的班组,那么也不能排其他晚班的班组了。
            //(3)休班的问题怎么解决?

            PersonShopGroupRepository PersonShopGroupRepo      = new PersonShopGroupRepository();
            List <PersonShopGroup>    localListPersonShopGroup = PersonShopGroupRepo.GetAll()
                                                                 .Where(it => it._ShopGroups == ShopGroup)
                                                                 .OrderBy(it => it._User.UserStateID)
                                                                 .ToList();

            User userTemp = new User();
            //找该日期的值班类型有无该人,如果有,那么就不排,排下一个人。
            Boolean find = false;

            for (int i = 0; i <= localListPersonShopGroup.Count - 1; i++)
            {
                //找该日期的值班有无该人,如果有,那么就不排,排下一个人。
                if (this.checkRepeatDayOrNight(localListPersonShopGroup.ElementAt(i)._User, WorkDate) == false)
                {
                    //  if (this.checkAllToday(localListPersonShopGroup.ElementAt(i)._User, personShopGroupPBs.UserWorkDate) == false)
                    //  {
                    userTemp = localListPersonShopGroup.ElementAt(i)._User;
                    find     = true;
                    return(userTemp);
                    //  }
                }
            }
            if (find == false)//没有找到这样的,就用第一个
            {
                //localListPersonShopGroup.ElementAt(i)._User;
                userTemp = localListPersonShopGroup.FirstOrDefault()._User;
            }
            return(userTemp);
        }
        public ActionResult AddShopGroup(string ShopGroupName, string WorkDayOrNight, string _Kf_DepartMent, int?id)
        {
            //Kf_DepartMentRepository kf_DepartRepo = new Kf_DepartMentRepository();
            //IEnumerable<SelectListItem> listDepartMent = kf_DepartRepo.GetData(this.Users().DepartMent.ID)
            //    .Select(p => new SelectListItem
            //    {
            //        Text = p.DepartMentName,
            //        Value = p.ID.ToString().Trim(),
            //    });
            //ViewData["listDepartMent"] = listDepartMent;
            if (ShopGroupName.IsNullOrEmpty())
            {
                return(Json(new { state = false, message = "请填写分组名称!" }));
            }
            if (WorkDayOrNight.IsNullOrEmpty())
            {
                return(Json(new { state = false, message = "请选择值班类型!" }));
            }
            if (_Kf_DepartMent.IsNullOrEmpty())
            {
                return(Json(new { state = false, message = "请选择部门!" }));
            }

            ShopGroups shopGroup = new ShopGroups();

            if (id != null && id.Value > 0)
            {
                shopGroup = this.ShopGroupRepo.GetByDatabaseID(id.Value);
            }

            try
            {
                //赋值
                shopGroup.ShopGroupName  = ShopGroupName;
                shopGroup.WorkDayOrNight = WorkDayOrNight.ToEnum <DayOrNight>();
                shopGroup._Kf_DepartMent = new Kf_DepartMent {
                    ID = _Kf_DepartMent.ToInt()
                };

                //保存
                if (id != null && id.Value > 0)
                {
                    shopGroup.UpdateTime = System.DateTime.Today;
                    ShopGroupRepo.Update(shopGroup);
                }
                else
                {
                    if (ShopGroupRepo.ExistShopGroupsName(shopGroup.ShopGroupName))
                    {
                        return(Json(new { state = false, message = "添加失败 店铺已存在!" }));
                    }
                    shopGroup.ContentShops = "无";
                    shopGroup.UpdateTime   = System.DateTime.Today;
                    ShopGroupRepo.Save(shopGroup);
                }

                //alertMessage = "操作成功!";
                //ViewData["alertMessage"] = alertMessage;
                //return RedirectToAction("ShopGroupIndex");
                return(Json(new { state = true, message = "操作成功!" }));
            }
            catch (RuleException ex)
            {
                throw new RuleException(ex.Message, ex);
            }
        }