protected bool ValidateSaveTpModel(TerraPointSaveModel model) { DateTime tpDay; if (!DateTime.TryParse(model.Day, CultureInfo.GetCultureInfo("ru-RU"), DateTimeStyles.None, out tpDay)) { //ModelState.AddModelError(string.Empty, "Неправильная дата"); model.Error = "Неправильная дата"; } model.TpDay = tpDay; if (string.IsNullOrEmpty(model.Hours) && (tpDay.Date > DateTime.Today)) { //ModelState.AddModelError("Hours", "Необходимо указать поле 'План'"); model.Error = "Необходимо указать плановые часы"; return false; } if (string.IsNullOrEmpty(model.FactHours) && (tpDay.Date < DateTime.Today)) { //ModelState.AddModelError("Hours", "Необходимо указать поле 'План'"); model.Error = "Необходимо указать фактические часы"; return false; } if (string.IsNullOrEmpty(model.FactHours) && string.IsNullOrEmpty(model.Hours) && (tpDay.Date == DateTime.Today)) { //ModelState.AddModelError("Hours", "Необходимо указать поле 'План'"); model.Error = "Необходимо указать плановые или фактические часы"; return false; } if (!string.IsNullOrEmpty(model.Hours)) { decimal hours; if (!decimal.TryParse(model.Hours, out hours) || hours < 0 || hours > 24) { //ModelState.AddModelError("Hours", "Поле 'План' должно быть целым числом от 0 до 24"); model.Error = "Плановые часы должны быть числом от 0 до 24"; } else model.TpHours = hours; } if (!string.IsNullOrEmpty(model.FactHours)) { decimal hours; if (!decimal.TryParse(model.FactHours, out hours) || hours < 0 || hours > 24) { //ModelState.AddModelError("Hours", "Поле 'План' должно быть целым числом от 0 до 24"); model.Error = "Фактические часы быть числом от 0 до 24"; } else model.TpFactHours = hours; } return string.IsNullOrEmpty(model.Error); }
public ContentResult SaveTerraPoint(int pointId, int id, int userId, string day, string hours, int credits, int factCredits, int factPointId, string factHours) { TerraPointSaveModel model = new TerraPointSaveModel { Id = id, IsCreditAvailable = credits, IsFactCreditAvailable = factCredits, Day = day, Hours = hours, PointId = pointId, UserId = userId, FactHours = factHours, FactPointId = factPointId, }; try { if (ValidateSaveTpModel(model)) { // Если дата точки больше текущей даты, Факт заполняется значениями из Плана if(model.TpDay.Date > DateTime.Today) { model.FactPointId = model.PointId; model.FactHours = model.Hours; model.TpFactHours = model.TpHours; model.IsFactCreditAvailable = model.IsCreditAvailable; } RequestBl.SaveTerraPoint(model); } } catch (Exception ex) { Log.Error("Exception on SaveTerraPoint:", ex); string error = ex.GetBaseException().Message; model.Error = string.Format("Ошибка: {0}", error); } var jsonSerializer = new JavaScriptSerializer(); string jsonString = jsonSerializer.Serialize(model); return Content(jsonString); }