diff --git a/src/bnhtrade.Core/Data/Database/Log/DateTimeLog.cs b/src/bnhtrade.Core/Data/Database/Log/DateTimeLog.cs new file mode 100644 index 0000000..e222e3f --- /dev/null +++ b/src/bnhtrade.Core/Data/Database/Log/DateTimeLog.cs @@ -0,0 +1,136 @@ +using System; +using System.Collections.Generic; +using System.Data.SqlClient; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace bnhtrade.Core.Data.Database.Log +{ + public class DateTimeLog : Connection + { + public DateTimeLog(string sqlConnectionString) : base(sqlConnectionString) + { + } + public DateTime GetBusinessStartUtc + { + get + { + DateTime businessStart = new DateTime(2014, 09, 01); + return DateTime.SpecifyKind(businessStart, DateTimeKind.Utc); + } + } + /// + /// Gets the Date and Time by a unique string. + /// + /// Unique string + /// UTC DateTime or null + public DateTime GetDateTimeUtc(string logDateTimeId) + { + using (SqlConnection conn = new SqlConnection(sqlConnectionString)) + { + conn.Open(); + + using (SqlCommand cmd = new SqlCommand(@" + SELECT + DateTimeUtc + FROM + tblLogDateTime + WHERE + LogDateTimeID = @logDateTimeID + ", conn)) + { + cmd.Parameters.AddWithValue("@logDateTimeID", logDateTimeId); + + object obj = cmd.ExecuteScalar(); + + if (obj == null || obj == DBNull.Value) + { + throw new Exception("Id not found."); + } + else + { + DateTime returnDt = (DateTime)obj; + return DateTime.SpecifyKind(returnDt, DateTimeKind.Utc); + } + } + } + } + public void SetDateTimeUtc(string logDateTimeID, DateTime utcDateTime) + { + utcDateTime = DateTime.SpecifyKind(utcDateTime, DateTimeKind.Utc); + + using (SqlConnection conn = new SqlConnection(sqlConnectionString)) + { + conn.Open(); + + using (SqlCommand cmd = new SqlCommand(@" + UPDATE tblLogDateTime + SET + DateTimeUtc = @utcDateTime + ,RecordModified = @recordModified + WHERE + LogDateTimeID = @logDateTimeID + ", conn)) + { + cmd.Parameters.AddWithValue("@utcDateTime", utcDateTime.ToUniversalTime()); + cmd.Parameters.AddWithValue("@recordModified", DateTime.UtcNow.ToUniversalTime()); + cmd.Parameters.AddWithValue("@logDateTimeID", logDateTimeID); + + int count = cmd.ExecuteNonQuery(); + + if (count == 0) + { + throw new Exception("Error, failed to update record."); + } + } + } + } + public void NewDateTimeUtc(string LogDateTimeId, DateTime utcDateTime, string comments = null) + { + if (string.IsNullOrWhiteSpace(LogDateTimeId)) + { throw new Exception("Invalid LogDateTimeID"); } + + utcDateTime = DateTime.SpecifyKind(utcDateTime, DateTimeKind.Utc); + + using (SqlConnection conn = new SqlConnection(sqlConnectionString)) + { + conn.Open(); + + using (SqlCommand cmd = new SqlCommand(@" + INSERT INTO tblLogDateTime ( + LogDateTimeID + ,DateTimeUtc + ,Comments + ,RecordModified + ,RecordCreated + ) + VALUES ( + @logDateTimeId + ,@utcDateTime + ,@comments + ,@recordModified + ,@recordCreated + ) + ", conn)) + { + var nowTime = DateTime.UtcNow; + cmd.Parameters.AddWithValue("@logDateTimeId", LogDateTimeId); + cmd.Parameters.AddWithValue("@utcDateTime", utcDateTime); + if (string.IsNullOrWhiteSpace(comments)) { cmd.Parameters.AddWithValue("@comments", DBNull.Value); } + else { cmd.Parameters.AddWithValue("@comments", comments); } + cmd.Parameters.AddWithValue("@recordModified", nowTime.ToUniversalTime()); + cmd.Parameters.AddWithValue("@recordCreated", nowTime.ToUniversalTime()); + + int count = cmd.ExecuteNonQuery(); + + if (count == 0) + { + throw new Exception("Error updating, no records where effected."); + } + } + } + } + + } +} \ No newline at end of file