public virtual ActionResult CheckCoworkersAndCommonEmployees(EmployeeWorkplaceForSave model)
        {
            string msg           = "";
            int?   oldCoworkerID = null;
            int?   newCoworkerID = null;

            var employee  = Repository.Employees.GetInstance(model.ID);
            var coworkers = Kesco.Employees.BusinessLogic.Repository.Employees.GetEmployeeCoWorkersByOfficeWorkPlace(model.ID, model.WorkPlaceID);

            //Текущий общий сотрудник
            oldCoworkerID = employee.CommonEmployeeID;
            //Новый общий сотрудник
            newCoworkerID = coworkers.Where(c => c.Status == 0 && c.PersonID == null).Select(k => k.CoWorkerID).FirstOrDefault();

            if (oldCoworkerID == 0)
            {
                oldCoworkerID = null;
            }
            if (newCoworkerID == 0)
            {
                newCoworkerID = null;
            }

            if (employee.Status == 0 && employee.PersonID == null)
            {
                return(Json("true", JsonRequestBehavior.AllowGet));
            }
            else
            {
                //Ошибка
                if (oldCoworkerID != null && newCoworkerID != null && oldCoworkerID != newCoworkerID)
                {
                    var commonEmployee = Repository.Employees.GetInstance(Convert.ToInt32(employee.CommonEmployeeID));
                    msg = String.Format(@"{0} является членом группы {1}, но вы назначаете его на рабочее место группы {2}. Сотрудник не может одновременно быть членом двух групп посменной работы.", employee.LastNameWithInitials, commonEmployee.LastNameWithInitials, coworkers.Where(m => m.PersonID == null).Select(k => k.CoWorker).FirstOrDefault());
                    Response.StatusCode = (int)System.Net.HttpStatusCode.BadRequest;
                    return(Content(msg, System.Net.Mime.MediaTypeNames.Text.Plain));
                }
                //Новое место в группе
                else if (newCoworkerID != null && oldCoworkerID != newCoworkerID)
                {
                    msg = String.Format(@"Вы назначаете {0} на рабочее место группы {1}. Вы подтверждаете, что {0} является членом группы {1}?", employee.LastNameWithInitials, coworkers.Where(m => m.PersonID == null).Select(k => k.CoWorker).FirstOrDefault());
                }
                //Новое место в совместной работе
                else if (coworkers.Any(m => m.PersonID != null && m.WorkPlace == 1))
                {
                    msg = String.Format("Вы назначаете {0} на рабочее место, на котором посменно работают {1}. Вы подтверждаете, что {0} работает посменно {1}?", employee.LastNameWithInitials, String.Join(" ,", coworkers.Where(m => m.PersonID != null).Select(t => t.CoWorker)));
                }
            }

            if (!String.IsNullOrEmpty(msg))
            {
                return(Json(msg, JsonRequestBehavior.AllowGet));
            }
            return(Json("true", JsonRequestBehavior.AllowGet));
        }
 public virtual ActionResult SaveEmployeeWorkplace(EmployeeWorkplaceForSave model)
 {
     Kesco.Employees.BusinessLogic.Repository.Employees
     .SaveEmployeeWorkPlaces(model.ID, model.WorkPlaceID);
     return(Json("success", JsonRequestBehavior.AllowGet));
 }