public static BusinessLibrary.Models.ExerciseSet Convert(ExerciseSet_db instance)
 {
     if (instance == null)
     {
         return(null);
     }
     return(new BusinessLibrary.Models.ExerciseSet(instance.Id, instance.Date, instance.Time, instance.Weight, instance.Type, instance.Reps, instance.SetNumber));
 }
        /// <summary>
        /// Adds a new instance into the database.
        /// </summary>
        public static ExerciseSet_db Add(int id, DateTime date, TimeSpan time, int weight, string type, int reps, int setNumber,
                                         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 (time == TimeSpan.Zero)
                {
                    throw new StatusException(HttpStatusCode.BadRequest, "Please provide a valid duration");
                }

                //Generate a new instance
                ExerciseSet_db instance = new ExerciseSet_db
                                          (
                    id, date, time, weight, type, reps, setNumber
                                          );

                //Add to database
                int rowsAffected = context.ExecuteNonQueryCommand
                                   (
                    commandText: "INSERT INTO exercise_set (clientId, workoutLog_date, workoutLog_time, type, set_number, reps, weight) values (@id, @date, @time, @type, @set_number, @reps, @weight",
                    parameters: new Dictionary <string, object>()
                {
                    { "@id", instance.Id },
                    { "@date", instance.Date },
                    { "@time", instance.Time },
                    { "@weight", instance.Weight },
                    { "@type", instance.Type },
                    { "@reps", instance.Reps },
                    { "@set_number", instance.SetNumber },
                },
                    message: out string message
                                   );

                if (rowsAffected == -1)
                {
                    throw new Exception(message);
                }

                //Return value
                statusResponse = new StatusResponse("Exercise Set added successfully");
                return(instance);
            }
            catch (Exception exception)
            {
                statusResponse = new StatusResponse(exception);
                return(null);
            }
        }
        /// <summary>
        /// Retrieves specific instance
        /// </summary>
        public static ExerciseSet_db GetExerciseSet(int id, DateTime date, TimeSpan time,
                                                    DbContext context, out StatusResponse statusResponse)
        {
            try
            {
                //Get from database
                DataTable table = context.ExecuteDataQueryCommand
                                  (
                    commandText: "SELECT * FROM exercise_set WHERE clientId = @id, workoutLog_date = @date, workoutLog_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
                ExerciseSet_db instance = new ExerciseSet_db();
                foreach (DataRow row in table.Rows)
                {
                    instance = new ExerciseSet_db
                               (
                        id: Convert.ToInt32(row["id"]),
                        date: Convert.ToDateTime(row["date"]),
                        time: TimeSpan.Parse(row["time"].ToString()),
                        weight: Convert.ToInt32(row["weight"]),
                        type: row["type"].ToString(),
                        reps: Convert.ToInt32(row["reps"]),
                        setNumber: Convert.ToInt32(row["set_number"])
                               );
                }

                //Return value
                statusResponse = new StatusResponse("Exercise Set successfully retrieved");
                return(instance);
            }
            catch (Exception exception)
            {
                statusResponse = new StatusResponse(exception);
                return(null);
            }
        }