public ActionResult Create(int projectid, int type, FormCollection collection)
        {
            ViewBag.QuDao = DictionaryBLL.GetL2ByName("渠道类型", true);
            ViewBag.HasAppointment = false;

            ViewBag.Type = type;
            bool HasAppointment = (collection["HasAppointment"] != null && collection["HasAppointment"].Equals("Add")) ? true : false;
            ViewBag.HasAppointment = HasAppointment;

            ClientCreate cc = new ClientCreate();
            cc.ProjectId = projectid;
            Project p = Project.Get(projectid);
            if (p.RoomTypes.Count > 0)
            {
                cc.RoomType = p.RoomTypes[0].Name;
            }
            switch (type)
            {
                case 1:
                    cc.GroupId = UserInfo.CurUser.GetGroup(projectid);
                    ViewBag.Msg = "来电客户登记"; break;
                case 2:
                    ViewBag.Msg = "直访客户登记";//直访客户要选择小组
                    if (!UserInfo.CurUser.HasRight("客户管理-前台"))//非前台不能做来访登记
                    {
                        return Redirect("~/content/AccessDeny.htm");
                    }
                    break;
                case 3:
                    cc.GroupId = UserInfo.CurUser.GetGroup(projectid);
                    ViewBag.HasAppointment = true;
                    ViewBag.QuDao = new List<Dictionary2>
                                    {
                                        new Dictionary2 {L1 = "中介", L2=new List<string>()}
                                    };
                    ViewBag.Msg = "中介邀约客户报备";
                    break;
                case 4:
                    cc.GroupId = Project.GetGroupByName(projectid, "前台");
                    ViewBag.HasAppointment = true;
                    ViewBag.QuDao = new List<Dictionary2>
                                    {
                                        new Dictionary2 {L1 = "电话中心", L2=new List<string>()}
                                    };
                    ViewBag.Msg = "电话中心客户报备";
                    //ToDo:如果邀约客户未到访,然后再次报备如何处理?
                    break;
                case 5:
                    cc.GroupId = UserInfo.CurUser.GetGroup(projectid);
                    ViewBag.HasAppointment = true;
                    ViewBag.QuDao = new List<Dictionary2>
                                    {
                                        new Dictionary2 {L1 = "销售员拓客", L2=new List<string>()}
                                    };
                    ViewBag.Msg = "销售员拓客报备";

                    break;
            }
            ClientStateEnum state = ClientStateEnum.邀约客户;
            TryUpdateModel(cc, collection);
            switch (type)
            {
                case 1:
                    state = ClientStateEnum.来电客户;
                    if (cc.AppointmentPlanTime != null || cc.AppointmentType != null)
                    {
                        if (cc.AppointmentPlanTime == null)
                        {
                            ModelState.AddModelError("AppointmentPlanTime", "请输入邀约时间");
                        }
                        if (cc.AppointmentType == null)
                        {
                            ModelState.AddModelError("AppointmentType", "请输入邀约类型");
                        }
                    }
                    break;
                case 2:
                    state = ClientStateEnum.来访客户;
                    if (cc.AppointmentPlanTime != null || cc.AppointmentType != null)
                    {
                        if (cc.AppointmentPlanTime == null)
                        {
                            ModelState.AddModelError("AppointmentPlanTime", "请输入邀约时间");
                        }
                        if (cc.AppointmentType == null)
                        {
                            ModelState.AddModelError("AppointmentType", "请输入邀约类型");
                        }
                    }
                    break;
                case 3:
                    state = ClientStateEnum.邀约客户;
                    if (cc.AppointmentPlanTime == null)
                    {
                        ModelState.AddModelError("AppointmentPlanTime", "请输入邀约时间");
                    }
                    if (cc.AppointmentType == null)
                    {
                        ModelState.AddModelError("AppointmentType", "请输入邀约类型");
                    }
                    break;

                case 4:
                    state = ClientStateEnum.邀约客户;
                    if (cc.AppointmentPlanTime == null)
                    {
                        ModelState.AddModelError("AppointmentPlanTime", "请输入邀约时间");
                    }
                    if (cc.AppointmentType == null)
                    {
                        ModelState.AddModelError("AppointmentType", "请输入邀约类型");
                    }
                    if (string.IsNullOrEmpty(cc.CallPerson))
                    {
                        ModelState.AddModelError("CallPerson", "请输入经办人");
                    }
                    break;
                case 5:
                    state = ClientStateEnum.邀约客户;
                    if (cc.AppointmentPlanTime == null)
                    {
                        ModelState.AddModelError("AppointmentPlanTime", "请输入邀约时间");
                    }
                    if (cc.AppointmentType == null)
                    {
                        ModelState.AddModelError("AppointmentType", "请输入邀约类型");
                    }

                    break;

            }
            Client checkClient = new Client
            {
                Id = cc.Id,
                ProjectId = cc.ProjectId,
                Phone1 = cc.Phone1,
                Phone2 = cc.Phone2
            };
            JsonResult numcheck = PhoneCheck(checkClient.Phone1);
            Result result = (Result)numcheck.Data;
            if (!result.success)
            {
                if (result.obj.Equals("号码格式错误"))
                    ModelState.AddModelError("Phone1", result.obj.ToString());
            }
            if (!string.IsNullOrEmpty(checkClient.Phone2))
            {
                numcheck = PhoneCheck(checkClient.Phone2);
                result = (Result)numcheck.Data;
                if (!result.success)
                {
                    if (result.obj.Equals("号码格式错误"))
                        ModelState.AddModelError("Phone2", result.obj.ToString());
                }
            }
            int check = CheckClientByPhone(checkClient);
            if (check != 0)
            {
                ModelState.AddModelError("", "同电话号码客户已经存在,所在组为:" + DepartmentBLL.GetNameById(check));
            }
            if (ModelState.IsValid)
            {
                Client c = new Client();
                UpdateModel(c, collection);
                c.ProjectId = cc.ProjectId;
                c.GroupId = cc.GroupId;
                c.CreateTime = DateTime.Now;
                c.StateDate = DateTime.Today;
                c.State = state;
                c.CallPerson = cc.CallPerson;
                db.Clients.Add(c);
                db.SaveChanges();
                ClientActivity ca = new ClientActivity { Person = UserInfo.CurUser.Id };
                ca.ClientId = c.Id;
                switch (type)
                {
                    case 1:
                        db.ClientActivities.Add(ca);
                        ca.ActualTime = DateTime.Today;
                        ca.Type = "来电";
                        ca.FirstType = 1;
                        break;
                    case 2:
                        db.ClientActivities.Add(ca);
                        ca.ActualTime = DateTime.Today;
                        ca.Type = "来访";
                        ca.FirstType = 2;
                        break;
                    case 3:
                    case 4:
                        break;
                }
                if (cc.AppointmentType != null)
                {
                    ClientActivity appoint = new ClientActivity { Person = UserInfo.CurUser.Id };
                    appoint.ClientId = c.Id;
                    appoint.PlanTime = cc.AppointmentPlanTime;
                    appoint.Type = cc.AppointmentType;
                    appoint.Detail = cc.AppointmentDetail;

                    db.ClientActivities.Add(appoint);
                }
                if (!string.IsNullOrEmpty(c.Phone2))
                    c.AllPhone = string.Format("{0},{1}", c.Phone1, c.Phone2);
                else
                    c.AllPhone = c.Phone1;
                Utilities.AddLog(db, c.Id, Client.LogClass, "客户登记", string.Format("{0} 姓名:{1} 电话:{2}", ca.Type ?? cc.AppointmentType, c.Name, c.AllPhone));
                c.Code = p.GetNewClientCode(db);
                db.SaveChanges();

                return Redirect("./View/" + c.Id);
                //ToDo:这个地方有BUG,提交不成功后出错
            }
            else
            {
                return View("Create", cc);
            }
        }
        public ActionResult Create(int projectid, int type, string name, string phone)
        {
            ClientCreate cc = new ClientCreate();
            cc.AppointmentType = "来访邀约";
            ViewBag.Type = type;
            cc.Name = name;
            cc.Phone1 = phone;
            cc.ProjectId = projectid;
            Project p = Project.Get(projectid);
            if (p.RoomTypes.Count > 0)
            {
                cc.RoomType = p.RoomTypes[0].Name;
            }
            ViewBag.QuDao = DictionaryBLL.GetL2ByName("渠道类型", true);
            ViewBag.HasAppointment = false;
            switch (type)
            {
                case 1:
                    ViewBag.Msg = "来电客户登记";
                    cc.AppointmentType = ""; break;
                case 2:
                    ViewBag.Msg = "直访客户登记";
                    cc.AppointmentType = "";
                    if (!UserInfo.CurUser.HasRight("客户管理-前台"))//非前台不能做来访登记
                    {
                        return Redirect("~/content/AccessDeny.htm");
                    }
                    break;
                case 3:
                    ViewBag.HasAppointment = true;
                    ViewBag.QuDao = new List<Dictionary2>
                                    {
                                        new Dictionary2 {L1 = "中介", L2=new List<string>()}
                                    };
                    ViewBag.Msg = "中介邀约客户报备";
                    break;
                case 4:
                    ViewBag.HasAppointment = true;
                    ViewBag.QuDao = new List<Dictionary2>
                                    {
                                        new Dictionary2 {L1 = "电话中心", L2=new List<string>()}
                                    };
                    ViewBag.Msg = "电话中心客户报备";
                    //ToDo:如果邀约客户未到访,然后再次报备如何处理?
                    break;
                case 5:
                    ViewBag.HasAppointment = true;
                    ViewBag.QuDao = new List<Dictionary2>
                                    {
                                        new Dictionary2 {L1 = "销售员拓客", L2=new List<string>()}
                                    };
                    ViewBag.Msg = "销售员拓客报备";
                    break;
            }
            cc.ContactActualTime = DateTime.Now;

            return View(cc);
        }