/// <summary> /// Adds a new instance into the database. /// </summary> public static SleepLog_db Add(int id, DateTime date, TimeSpan time, TimeSpan sleepDuration, DbContext context, out StatusResponse statusResponse) { try { if (id == 0) { throw new StatusException(HttpStatusCode.BadRequest, "Please provide a valid id"); } if (date == DateTime.MinValue) { throw new StatusException(HttpStatusCode.BadRequest, "Please provide a valid date"); } if (sleepDuration == TimeSpan.Zero) { throw new StatusException(HttpStatusCode.BadRequest, "Please provide a valid duration"); } //Generate a new instance SleepLog_db instance = new SleepLog_db ( id, date, time, sleepDuration ); //Add to database int rowsAffected = context.ExecuteNonQueryCommand ( commandText: "INSERT INTO sleepLogs (id, date, time, sleep_duration) values (@id, @date, @time, @sleep_duration)", parameters: new Dictionary <string, object>() { { "@id", instance.Id }, { "@date", instance.Date }, { "@time", instance.Time }, { "@sleep_duration", instance.SleepDuration } }, message: out string message ); if (rowsAffected == -1) { throw new Exception(message); } //Return value statusResponse = new StatusResponse("Sleep Log added successfully"); return(instance); } catch (Exception exception) { statusResponse = new StatusResponse(exception); return(null); } }
/// <summary> /// Retrieves specific instance /// </summary> public static SleepLog_db GetSleepLog(int id, DateTime date, TimeSpan time, DbContext context, out StatusResponse statusResponse) { try { //Get from database DataTable table = context.ExecuteDataQueryCommand ( commandText: "SELECT * FROM sleepLogs WHERE id = @id, date = @date, time = @time", parameters: new Dictionary <string, object>() { { "@id", id }, { "@date", date }, { "@time", time } }, message: out string message ); if (table == null) { throw new Exception(message); } //Parse data SleepLog_db instance = new SleepLog_db(); foreach (DataRow row in table.Rows) { instance = new SleepLog_db ( id: Convert.ToInt32(row["id"]), date: Convert.ToDateTime(row["date"]), time: TimeSpan.Parse(row["time"].ToString()), sleepDuration: TimeSpan.Parse(row["sleep_duration"].ToString()) ); } //Return value statusResponse = new StatusResponse("Sleep Log successfully retrieved"); return(instance); } catch (Exception exception) { statusResponse = new StatusResponse(exception); return(null); } }