Implement CreateLog, DeleteLog, UpdateLog methods from interface.

include LogSourceDb in project
#29
This commit is contained in:
Watts 2017-04-12 22:00:40 +01:00
parent 4f4d247dc6
commit 101c19e4f4
2 changed files with 90 additions and 21 deletions

View File

@ -423,7 +423,8 @@ namespace SQLiteRepository
IdentifierId = ident.Id, IdentifierId = ident.Id,
Direction = logDirection, Direction = logDirection,
Year = year, Year = year,
CalendarWeek = calendarWeek CalendarWeek = calendarWeek,
Source = LogSourceDb.IDENTIFIER
}; };
_connection.Insert(timeLog); _connection.Insert(timeLog);
@ -516,6 +517,73 @@ namespace SQLiteRepository
return OperationResponse.DELETED; return OperationResponse.DELETED;
} }
public OperationResponse DeleteLog(TimeLog log)
{
var query = _connection.Query<TimeLogDb>(
"select * from TimeLogDb where Id=?", log.Id);
if (!query.Any())
return OperationResponse.FAILED;
_connection.ExecuteScalar<TimeLogDb>("delete from TimeLogDb where Id=?", log.Id);
return OperationResponse.DELETED;
}
public OperationResponse CreateLog(TimeLog log)
{
var calendarWeek = GetIso8601CalendarWeek(log.EventTime.UtcDateTime);
var year = log.EventTime.Year;
var dbLog = new TimeLogDb
{
SwipeEventDateTime = log.EventTime,
Direction = (LogDirectionDb)(int)log.Direction,
Year = year,
CalendarWeek = calendarWeek,
Source = (LogSourceDb)(int)log.Source,
UserId_FK = log.UserId,
IdentifierId = ConvertSourceToIdentifierId(log.Source),
};
_connection.Insert(dbLog);
return OperationResponse.CREATED;
}
public OperationResponse UpdateLog(TimeLog log)
{
var query = _connection.Query<TimeLogDb>(
"select * from TimeLogDb where Id=?", log.Id);
if(!query.Any())
return OperationResponse.FAILED;
if (log.CalendarWeek > 52 || log.CalendarWeek < 1)
{
log.CalendarWeek = GetIso8601CalendarWeek(log.EventTime.UtcDateTime);
}
if (log.Year < 2017)
{
log.Year = log.EventTime.Year;
}
_connection.ExecuteScalar<TimeLogDb>(
"update TimeLogDb set UserId_FK=?, Direction=?,SwipeEventDateTime=?,CalendarWeek=?,Year=?,Source=? where Id=?",
log.UserId, (LogDirectionDb) (int) log.Direction, log.EventTime, log.CalendarWeek, log.Year,
(LogSourceDb) (int) log.Source, log.Id);
return OperationResponse.UPDATED;
}
private int ConvertSourceToIdentifierId(LogSource logSource)
{
switch (logSource)
{
case LogSource.UI:
return -100;
case LogSource.TRAYAPP:
return -200;
default:
return -10;
}
}
private bool SetUserGroups(int userId, List<Group> groups) private bool SetUserGroups(int userId, List<Group> groups)
{ {
var groupIds = GetGroupIds(groups.Select(x => x.Name).ToList()); var groupIds = GetGroupIds(groups.Select(x => x.Name).ToList());
@ -560,7 +628,7 @@ namespace SQLiteRepository
EventTime = x.SwipeEventDateTime, EventTime = x.SwipeEventDateTime,
UserId = x.UserId_FK, UserId = x.UserId_FK,
Year = x.Year Year = x.Year
}).ToList(); }).OrderBy(x=>x.EventTime.UtcDateTime).ToList();
var dict = new Dictionary<DayOfWeek, DailyLogs>(); var dict = new Dictionary<DayOfWeek, DailyLogs>();
var logList = new List<DailyLogs>(); var logList = new List<DailyLogs>();
@ -572,7 +640,7 @@ namespace SQLiteRepository
} }
//add the logs to the respective day of the week. //add the logs to the respective day of the week.
foreach (var log in timeLogs) foreach (var log in timeLogs.OrderBy(x=>x.EventTime))
{ {
dict[log.EventTime.DayOfWeek].Logs.Add(log); dict[log.EventTime.DayOfWeek].Logs.Add(log);
} }
@ -607,7 +675,7 @@ namespace SQLiteRepository
private double CalculateDailyTotal(DailyLogs dailyLogs) private double CalculateDailyTotal(DailyLogs dailyLogs)
{ {
var totalInTime = TimeSpan.FromSeconds(0); var totalInTime = TimeSpan.FromSeconds(0);
var logs = dailyLogs.Logs.OrderBy(x => x.Id).ToArray(); var logs = dailyLogs.Logs.OrderBy(x => x.EventTime.UtcDateTime).ToArray();
var totalCalcMax = IsOdd(logs.Length) ? logs.Length - 1 : logs.Length; var totalCalcMax = IsOdd(logs.Length) ? logs.Length - 1 : logs.Length;
for (int i = 0; i < totalCalcMax; i += 2) for (int i = 0; i < totalCalcMax; i += 2)
{ {

View File

@ -61,6 +61,7 @@
<ItemGroup> <ItemGroup>
<Compile Include="CardUniqueId.cs" /> <Compile Include="CardUniqueId.cs" />
<Compile Include="GroupDb.cs" /> <Compile Include="GroupDb.cs" />
<Compile Include="LogSourceDb.cs" />
<Compile Include="SQLiteRepository.cs" /> <Compile Include="SQLiteRepository.cs" />
<Compile Include="Constants.cs" /> <Compile Include="Constants.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />