using BuddyFinance.Integration.Models; using BuddyFinance.Integration.Models.Enums; using BuddyFinance.Model; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace BuddyFinance.Integration { public class AdministrationIntegrator : BaseIntegrator { Object locker = new Object(); public BaseResult> ActivitLog(DateTime startDate, DateTime endDate) { var result = new BaseResult>((int)ResponseCodes.Success, "Success"); try { using (var db = new BuddyFinanceDBEntities()) { var logs = db.Set().Include("User") .Where(m => m.TimeStamp >= startDate && m.TimeStamp <= endDate).ToList(); //var logs = db.ActivityLogs.Where(m => m.TimeStamp.ToString().CompareTo(startDate.ToString()) > 0 // && m.TimeStamp.ToString().CompareTo(endDate.ToString()) < 0).ToList(); if (!logs.Any()) result.Result = new List(); else { var concurrentResult = new ConcurrentBag(); Parallel.ForEach(logs, m => { var logModel = new Models.Administration.ActivityLog { Id = m.Id, Timestamp = m.TimeStamp.ToString("yyyy-MM-dd hh:mm tt"), Description = m.Description, //.Substring(0, 60), Address = m.IpAddress, Browser = m.Browser, Type = m.Type, User = m.User_ }; lock (locker) { concurrentResult.Add(logModel); } }); result.Result = concurrentResult.ToList(); } } } catch (System.Exception ex) { result.ErrorCode = (int)ResponseCodes.Exception; result.ErrorMessage = "Could not load activity log. An error occured."; result.ExceptionString = GetExeptionString(ex); } return result; } public BaseResult ActivityLog(int id) { var result = new BaseResult((int)ResponseCodes.Success, "Success"); try { using (var db = new BuddyFinanceDBEntities()) { var log = db.ActivityLogs.Find(id); if (log != null) result.Result = new Models.Administration.ActivityLog() { Id = log.Id, Timestamp = log.TimeStamp.ToString("yyyy MMM dd - hh:mm tt"), Description = log.Description, Address = log.IpAddress, Browser = log.Browser, Type = log.Type, User = log.User_ }; else { result.ErrorCode = (int)ResponseCodes.NotFound; result.ErrorMessage = $"Log entry with Id '{id}' not found"; } } } catch (System.Exception ex) { result.ErrorCode = (int)ResponseCodes.Exception; result.ErrorMessage = "Could not load activity log. An error occured."; result.ExceptionString = GetExeptionString(ex); } return result; } } }