/// <summary> /// Returns state of calendar. /// </summary> /// <param name="calendar">Calendar dummy.</param> /// <returns>Success of operation.</returns> protected virtual StoringObjectState GetCalendarState(T calendar) { Entity entity = GetCalendarEntity(); StoringObjectState state = StoringObjectState.New; if (entity.FetchFromDB(calendar.Id)) { state = StoringObjectState.Changed; } return(state); }
/// <summary> /// Applies change. /// </summary> /// <param name="state">Calendar state.</param> /// <param name="calendar">Calendar dummy.</param> /// <returns>Success of operation.</returns> protected virtual bool ApplyChange(StoringObjectState state, T calendar) { bool result; switch (state) { case StoringObjectState.New: { result = InsertCalendar(calendar); break; } case StoringObjectState.Changed: { result = UpdateCalendar(calendar); break; } default: return(false); } return(result); }
/// <summary> /// Saves changes of calendar. /// </summary> /// <param name="calendar">Calendar dummy.</param> /// <returns>Success of operation.</returns> public bool Save(T calendar) { if (calendar == null) { throw new ArgumentNullException("calendar"); } StoringObjectState state = GetCalendarState(calendar); using (DBExecutor dbExecutor = _userConnection.EnsureDBConnection()) { dbExecutor.StartTransaction(); try { if (ApplyChange(state, calendar)) { dbExecutor.CommitTransaction(); return(true); } } catch { dbExecutor.RollbackTransaction(); throw; } dbExecutor.RollbackTransaction(); return(false); } }