public ActionResult MissionOrderEdit(MissionOrderEditModel model)
        {
            CorrectCheckboxes(model);
            CorrectDropdowns(model);
            if (!ValidateMissionOrderEditModel(model))
            {
                //model.IsApproved = false;
                //model.IsApprovedForAll = false;
                RequestBl.ReloadDictionaries(model);
                return View(model);
            }

            string error;
            if (!RequestBl.SaveMissionOrderEditModel(model, out error))
            {
                if (model.ReloadPage)
                {
                    ModelState.Clear();
                    if (!string.IsNullOrEmpty(error))
                        ModelState.AddModelError("", error);
                    return View(RequestBl.GetMissionOrderEditModel(model.Id, model.UserId));
                }
                if (!string.IsNullOrEmpty(error))
                    ModelState.AddModelError("", error);
            }
            if (!string.IsNullOrEmpty(error))
                return View(model);
            return RedirectToAction("Index");
        }
 protected void CorrectDropdowns(MissionOrderEditModel model)
 {
     if (!model.IsEditable)
      {
          model.TypeId = model.TypeIdHidden;
          model.Kind = model.KindHidden;
          model.GoalId = model.GoalIdHidden;
      }
      if(!model.IsSecritaryEditable)
      {
          model.AirTicketType = model.AirTicketTypeHidden;
          model.TrainTicketType = model.TrainTicketTypeHidden;
      }
 }
 protected bool ValidateMissionOrderEditModel(MissionOrderEditModel model)
 {
     if (model.IsTicketsEditable) return true;
     //return false;
     if (string.IsNullOrEmpty(model.BeginMissionDate) || string.IsNullOrEmpty(model.EndMissionDate))
         ModelState.AddModelError("BeginMissionDate", StrNoBeginOrEndDate);
     if(RequestBl.CheckAnyOtherOrdersExists(model))
         ModelState.AddModelError("BeginMissionDate", StrOtherOrdersExists);
     /*if (RequestBl.CheckOtherOrdersExists(model))
         ModelState.AddModelError("BeginMissionDate", StrOtherOrdersExists);*/
     if (!(RequestBl.CheckOrderBeginDate(model.BeginMissionDate) || model.IsTicketsEditable))
         ModelState.AddModelError("BeginMissionDate", StrOrderIsInPast);
     if(!string.IsNullOrEmpty(model.BeginMissionDate) && !string.IsNullOrEmpty(model.EndMissionDate)
         && model.IsEditable)
     {
         //Отключаем члена правления > добавил false &&
         if (false && RequestBl.IsMissionOrderLong(DateTime.Parse(model.EndMissionDate)
             ,DateTime.Parse(model.BeginMissionDate)))
         {
             if(string.IsNullOrEmpty(model.LongTermReason))
                 ModelState.AddModelError("LongTermReason", StrLongTermReasonIsRequired);
             model.IsChiefApproveNeed = true;
             model.IsChiefApproveNeedHidden = true;
         }
         else
         {
             if (ModelState.ContainsKey("LongTermReason"))
                 ModelState.Remove("LongTermReason");
             model.LongTermReason = string.Empty;
             model.IsChiefApproveNeed = false;
             model.IsChiefApproveNeedHidden = false;
         }
     }
     return ModelState.IsValid;
 }
        protected void CorrectCheckboxes(MissionOrderEditModel model)
        {
            if (!model.IsChiefApproveAvailable /*&& model.IsChiefApprovedHidden.Value*/)
            {
                if (ModelState.ContainsKey("IsChiefApproved"))
                    ModelState.Remove("IsChiefApproved");
                model.IsChiefApproved = model.IsChiefApprovedHidden;
            }
            if (!model.IsManagerApproveAvailable /*&& model.IsManagerApprovedHidden.Value*/)
            {
                if (ModelState.ContainsKey("IsManagerApproved"))
                    ModelState.Remove("IsManagerApproved");
                model.IsManagerApproved = model.IsManagerApprovedHidden;
            }
            if (!model.IsUserApprovedAvailable && model.IsUserApprovedHidden)
            {
                if (ModelState.ContainsKey("IsUserApproved"))
                    ModelState.Remove("IsUserApproved");
                model.IsUserApproved = model.IsUserApprovedHidden;
            }
            if (ModelState.ContainsKey("IsChiefApproveNeed"))
                ModelState.Remove("IsChiefApproveNeed");
            model.IsChiefApproveNeed = model.IsChiefApproveNeedHidden;

            if (model.IsManagerApproveAvailable && model.IsManagerApproved.HasValue
                && !model.IsManagerApproved.Value)
            {
                if (ModelState.ContainsKey("IsManagerApproved"))
                    ModelState.Remove("IsManagerApproved");
            }
            if (model.IsChiefApproveAvailable && model.IsChiefApproved.HasValue
                && !model.IsChiefApproved.Value)
            {
                if (ModelState.ContainsKey("IsChiefApproved"))
                    ModelState.Remove("IsChiefApproved");
                if (ModelState.ContainsKey("IsManagerApproved"))
                    ModelState.Remove("IsManagerApproved");
            }
            if (!model.IsEditable)
            {
                if (model.IsResidencePaidHidden)
                {
                    if (ModelState.ContainsKey("IsResidencePaid"))
                        ModelState.Remove("IsResidencePaid");
                    model.IsResidencePaid = model.IsResidencePaidHidden;
                }
                if (model.IsAirTicketsPaidHidden)
                {
                    if (ModelState.ContainsKey("IsAirTicketsPaid"))
                        ModelState.Remove("IsAirTicketsPaid");
                    model.IsAirTicketsPaid = model.IsAirTicketsPaidHidden;
                }
                if (model.IsTrainTicketsPaidHidden)
                {
                    if (ModelState.ContainsKey("IsTrainTicketsPaid"))
                        ModelState.Remove("IsTrainTicketsPaid");
                    model.IsTrainTicketsPaid = model.IsTrainTicketsPaidHidden;
                }
            }
        }