public ActionResult CalcScheduleByVisit(ScheduleVisit scheduleVisit)
 {
     if (scheduleVisit.Id==null)
         throw new DataException("Не выбран базовый визит для расчета или не назначена дата");
     DataProvider.Calc(scheduleVisit);
     return Json(new[] { scheduleVisit });
 }
        public ActionResult DeleteScheduleVisit([DataSourceRequest] DataSourceRequest request, ScheduleVisit scheduleVisit)
        {
            if (scheduleVisit != null)
            {
                if (!scheduleVisit.Id.HasValue)
                    throw new DataException("Невозможно удалить дату у незапланированного визита ");
                DataProvider.Delete(scheduleVisit);
            }

            return Json(new[] { scheduleVisit }.ToDataSourceResult(request, ModelState));
        }
        public ActionResult UpdateScheduleVisit([DataSourceRequest] DataSourceRequest request, ScheduleVisit scheduleVisit)
        {
            if (scheduleVisit != null && ModelState.IsValid)
            {
                if (!scheduleVisit.ScheduleDate.HasValue)
                    throw new DataException("Дата планирования не задана");

                    if (scheduleVisit.Id.HasValue)
                    {
                        DataProvider.Update(scheduleVisit);
                    }
                    else
                    {
                        DataProvider.Add(scheduleVisit);
                    }

            }

            return Json(new[] { scheduleVisit }.ToDataSourceResult(request, ModelState));
        }
        public ActionResult UpdateScheduleVisit([DataSourceRequest] DataSourceRequest request, ScheduleVisit scheduleVisit)
        {
            //если дата не выбрана и не отменен визит
            if (!scheduleVisit.ScheduleDate.HasValue && !scheduleVisit.Canceled)
            {
                ModelState.AddModelError("ScheduleDate", "Дата не введена");
            }

            if (ModelState.IsValid)
            {
                if (scheduleVisit.Id.HasValue)
                {
                    DataProvider.Update(scheduleVisit);
                }
                else
                {
                    DataProvider.Add(scheduleVisit);
                }
            }

            return Json(new[] { scheduleVisit }.ToDataSourceResult(request, ModelState));
        }