public static int UpdateRepair(Repair original_Repair, Repair Repair)
    {
        int           count   = 0; //counter for how many rows get updated
        SqlConnection connect = new SqlConnection(AppRepairsDB.GetConnectionString());
        string        update  = "UPDATE Repairs " +
                                "SET DateRepaired = @newDateRepaired, " +
                                "Description = @newDescription " +
                                "WHERE RepairID = @original_RepairID " + //concurrency
                                "AND ProductCode = @original_ProductCode " +
                                "AND DateReported = @original_DateReported " +
                                "AND (DateRepaired = @original_DateRepaired " +
                                "OR DateRepaired IS NULL " +
                                "AND @original_DateRepaired IS NULL) " +
                                "AND Title = @original_Title " +
                                "AND Description = @original_Description";
        SqlCommand cmd = new SqlCommand(update, connect);

        //deal with null dates
        if (Repair.DateRepaired.HasValue)
        {
            cmd.Parameters.AddWithValue("newDateRepaired", Repair.DateRepaired);
        }
        else
        {
            cmd.Parameters.AddWithValue("newDateRepaired", DBNull.Value);
        }

        cmd.Parameters.AddWithValue("newDescription", Repair.Description);
        cmd.Parameters.AddWithValue("original_RepairID", original_Repair.RepairID);
        cmd.Parameters.AddWithValue("original_ProductCode", original_Repair.ProductCode);
        cmd.Parameters.AddWithValue("original_DateReported", original_Repair.DateReported);

        //deal with null dates from the original_Repair object
        if (original_Repair.DateRepaired.HasValue)
        {
            cmd.Parameters.AddWithValue("original_DateRepaired", original_Repair.DateRepaired);
        }
        else
        {
            cmd.Parameters.AddWithValue("original_DateRepaired", DBNull.Value);
        }

        cmd.Parameters.AddWithValue("original_Title", original_Repair.Title);
        cmd.Parameters.AddWithValue("original_Description", original_Repair.Description);

        connect.Open();
        count = cmd.ExecuteNonQuery(); //run the update as the count
        connect.Close();
        return(count);
    }
    [DataObjectMethod(DataObjectMethodType.Select)] //annotate data object select method
    public static List <Repair> GetRepairsByTechnician(string technician)
    {
        List <Repair> RepairsList = new List <Repair>();
        SqlConnection connect     = new SqlConnection(AppRepairsDB.GetConnectionString());
        string        select      = "SELECT RepairID, DateReported, Title, Description, CustomerID, ProductCode, DateRepaired " +
                                    "FROM Repairs " +
                                    "WHERE TechID = @TechID " +
                                    "ORDER BY DateReported";
        SqlCommand command = new SqlCommand(select, connect);

        command.Parameters.AddWithValue("TechID", technician);
        connect.Open();
        SqlDataReader dr = command.ExecuteReader();

        //temp objects for iteration
        Repair   i;
        DateTime dt         = new DateTime();
        DateTime?nullableDT = new DateTime?();

        while (dr.Read())
        {
            i              = new Repair();
            i.RepairID     = (int)dr["RepairID"];
            i.DateReported = (DateTime)dr["DateReported"];
            i.Title        = dr["Title"].ToString();
            i.Description  = dr["Description"].ToString();
            i.CustomerID   = (int)dr["CustomerID"];
            i.ProductCode  = dr["ProductCode"].ToString();
            string date = dr["DateRepaired"].ToString();
            if (DateTime.TryParse(date, out dt))
            {
                nullableDT     = dt;
                i.DateRepaired = nullableDT;
            }
            else
            {
                i.DateRepaired = null;
            }
            RepairsList.Add(i);
        }
        connect.Close();
        return(RepairsList);
    }