parent
00a6894197
commit
36282ee355
@ -2,7 +2,6 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Runtime.InteropServices.WindowsRuntime;
|
|
||||||
using Interfaces;
|
using Interfaces;
|
||||||
using SQLite.Net;
|
using SQLite.Net;
|
||||||
using SQLite.Net.Platform.Win32;
|
using SQLite.Net.Platform.Win32;
|
||||||
@ -12,15 +11,20 @@ namespace SQLiteRepository
|
|||||||
public class SQLiteRepository : IRepository
|
public class SQLiteRepository : IRepository
|
||||||
{
|
{
|
||||||
private readonly SQLiteConnection _connection;
|
private readonly SQLiteConnection _connection;
|
||||||
|
private readonly ILogger _logger;
|
||||||
private string _path = "flexitimedb.db";
|
private string _path = "flexitimedb.db";
|
||||||
|
|
||||||
public SQLiteRepository()
|
public SQLiteRepository(ILogger logger)
|
||||||
{
|
{
|
||||||
|
if(logger == null) throw new ArgumentNullException(nameof(logger));
|
||||||
|
_logger = logger;
|
||||||
|
|
||||||
_connection = new SQLiteConnection(new SQLitePlatformWin32(), _path);
|
_connection = new SQLiteConnection(new SQLitePlatformWin32(), _path);
|
||||||
|
|
||||||
_connection.CreateTable<CardUniqueId>();
|
_connection.CreateTable<CardUniqueId>();
|
||||||
_connection.CreateTable<UserIdentity>();
|
_connection.CreateTable<UserIdentity>();
|
||||||
_connection.CreateTable<TimeLogDb>();
|
_connection.CreateTable<TimeLogDb>();
|
||||||
|
_logger.Trace("Initialised SQLite Repository");
|
||||||
}
|
}
|
||||||
|
|
||||||
public UserList GetUsers(int pageNumber=-1, int pageSize=-1)
|
public UserList GetUsers(int pageNumber=-1, int pageSize=-1)
|
||||||
@ -89,12 +93,14 @@ namespace SQLiteRepository
|
|||||||
|
|
||||||
public UserList Search(string searchParam)
|
public UserList Search(string searchParam)
|
||||||
{
|
{
|
||||||
|
_logger.Trace("Searching SQLite database for the term: {0}", searchParam);
|
||||||
var ret = new UserList();
|
var ret = new UserList();
|
||||||
searchParam = string.Format("%{0}%", searchParam);
|
searchParam = string.Format("%{0}%", searchParam);
|
||||||
var users = _connection.Query<UserIdentity>(
|
var users = _connection.Query<UserIdentity>(
|
||||||
SQLiteProcedures.SEARCH_USER_LIST,
|
SQLiteProcedures.SEARCH_USER_LIST,
|
||||||
searchParam, searchParam);
|
searchParam, searchParam);
|
||||||
|
|
||||||
|
_logger.Trace("Got {0} results for term: {1}", users.Count, searchParam);
|
||||||
if (!users.Any())
|
if (!users.Any())
|
||||||
{
|
{
|
||||||
ret.PageNumber = 1;
|
ret.PageNumber = 1;
|
||||||
@ -120,6 +126,7 @@ namespace SQLiteRepository
|
|||||||
}
|
}
|
||||||
ret.Users.Add(userObj);
|
ret.Users.Add(userObj);
|
||||||
}
|
}
|
||||||
|
//TODO: figure out paging here. - should there be any?
|
||||||
ret.PageSize = 20;
|
ret.PageSize = 20;
|
||||||
ret.PageNumber = 1;
|
ret.PageNumber = 1;
|
||||||
|
|
||||||
@ -130,21 +137,33 @@ namespace SQLiteRepository
|
|||||||
{
|
{
|
||||||
var ret = new User();
|
var ret = new User();
|
||||||
|
|
||||||
var users = _connection.Query<UserIdentity>(
|
try
|
||||||
SQLiteProcedures.GET_USER_BY_ID,
|
|
||||||
id);
|
|
||||||
|
|
||||||
if (!users.Any()) return ret;
|
|
||||||
|
|
||||||
var user = users.First();
|
|
||||||
ret = ChangeToUserObject(user);
|
|
||||||
var cards = _connection.Query<CardUniqueId>(
|
|
||||||
SQLiteProcedures.GET_CARDS_BY_USER_ID,
|
|
||||||
user.Id);
|
|
||||||
|
|
||||||
foreach (var card in cards)
|
|
||||||
{
|
{
|
||||||
ret.AssociatedIdentifiers.Add(new Identifier { UniqueId = card.CardUId, IsAssociatedToUser = true, Id = card.Id});
|
var users = _connection.Query<UserIdentity>(
|
||||||
|
SQLiteProcedures.GET_USER_BY_ID,
|
||||||
|
id);
|
||||||
|
|
||||||
|
if (!users.Any()) return ret;
|
||||||
|
|
||||||
|
var user = users.First();
|
||||||
|
ret = ChangeToUserObject(user);
|
||||||
|
var cards = _connection.Query<CardUniqueId>(
|
||||||
|
SQLiteProcedures.GET_CARDS_BY_USER_ID,
|
||||||
|
user.Id);
|
||||||
|
|
||||||
|
foreach (var card in cards)
|
||||||
|
{
|
||||||
|
ret.AssociatedIdentifiers.Add(new Identifier { UniqueId = card.CardUId, IsAssociatedToUser = true, Id = card.Id });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.Error(ex, "Error in GetUser with Id: {0}", id);
|
||||||
|
ret.UserId = id;
|
||||||
|
ret.FirstName = ret.LastName = string.Empty;
|
||||||
|
ret.HoursPerWeek = -1.0f;
|
||||||
|
ret.IsContractor = false;
|
||||||
|
ret.AssociatedIdentifiers.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@ -158,7 +177,14 @@ namespace SQLiteRepository
|
|||||||
var calendarWeek = GetIso8601CalendarWeek(now);
|
var calendarWeek = GetIso8601CalendarWeek(now);
|
||||||
ret.CalendarWeek = calendarWeek;
|
ret.CalendarWeek = calendarWeek;
|
||||||
ret.SelectedDate = now.Date;
|
ret.SelectedDate = now.Date;
|
||||||
ret.TimeLogs = GetTimeLogList(userId, calendarWeek, now.Year);
|
try
|
||||||
|
{
|
||||||
|
ret.TimeLogs = GetTimeLogList(userId, calendarWeek, now.Year);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.Error(ex, "Error in GetTimeLogs with Id: {0}", userId);
|
||||||
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -169,7 +195,14 @@ namespace SQLiteRepository
|
|||||||
var calendarWeek = GetIso8601CalendarWeek(selectedDate);
|
var calendarWeek = GetIso8601CalendarWeek(selectedDate);
|
||||||
ret.CalendarWeek = calendarWeek;
|
ret.CalendarWeek = calendarWeek;
|
||||||
|
|
||||||
ret.TimeLogs = GetTimeLogList(userId, calendarWeek, selectedDate.Year);
|
try
|
||||||
|
{
|
||||||
|
ret.TimeLogs = GetTimeLogList(userId, calendarWeek, selectedDate.Year);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.Error(ex, "Error in GetTimeLogs with Id: {0} and selected date: {1}", userId, selectedDate);
|
||||||
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -400,6 +433,11 @@ namespace SQLiteRepository
|
|||||||
DayOfWeek.Monday);
|
DayOfWeek.Monday);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Check whether the specified DateTime is from yesterday or older.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="dt">the DateTime object to check is yesterday or older</param>
|
||||||
|
/// <returns>true - is yesterday or older.</returns>
|
||||||
private bool IsLogDateTimeYesterdayOrOlder(DateTime dt)
|
private bool IsLogDateTimeYesterdayOrOlder(DateTime dt)
|
||||||
{
|
{
|
||||||
return dt.Date.CompareTo(DateTime.Today.Date) < 0;
|
return dt.Date.CompareTo(DateTime.Today.Date) < 0;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user