using Microsoft.EntityFrameworkCore; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using UnivateProperties_API.Containers.Property; using UnivateProperties_API.Containers.Timeshare; using UnivateProperties_API.Context; using UnivateProperties_API.Model.Logging; namespace UnivateProperties_API.Repository.Logging { public class SearchLogRepository : ISearchLogRepository { private readonly DataContext _dbContext; public SearchLogRepository(DataContext dbContext) { _dbContext = dbContext; } public List Get(Func where) { return _dbContext.SearchLogs.Where(where).ToList(); } public List GetAll() { return _dbContext.SearchLogs.ToList(); } public SearchLog GetDetailed(Func first) { var item = _dbContext.SearchLogs.FirstOrDefault(first); return item; } public List GetDetailedAll() { return _dbContext.SearchLogs.ToList(); } public List GetSearches() { var list = new List(); var logs = GetAll(); foreach (SearchLog log in logs) { var searchObject = JsonConvert.DeserializeObject(log.Search); list.Add(new SearchDisplay() { Date = string.Format("{0:yyyy-MM-dd}", log.Created), Time = string.Format("{0:HH:mm:ss}", log.Created), Type = log.Type, UserName = searchObject.UserName, Property = searchObject.Property, Value = searchObject.Value }); } return list; } public void Insert(SearchLog item) { _dbContext.SearchLogs.Add(item); Save(); } public void Insert(IEnumerable items) { foreach (var item in items) { _dbContext.SearchLogs.Add(item); Save(); } } public void Remove(SearchLog item) { _dbContext.SearchLogs.Remove(item); Save(); } public void Remove(IEnumerable items) { foreach (var item in items) { _dbContext.SearchLogs.Remove(item); Save(); } } public void RemoveAtId(int item) { var searchLog = Get(x => x.Id == item).FirstOrDefault(); if (searchLog != null) { _dbContext.SearchLogs.Remove(searchLog); Save(); } } public void Save() { _dbContext.SaveChanges(); } public void SaveSearch(SearchObject item) { var searchLog = new SearchLog { Type = item.Type, Search = JsonConvert.SerializeObject(item) }; _dbContext.SearchLogs.Add(searchLog); Save(); } public void Update(SearchLog item) { _dbContext.Entry(item).State = EntityState.Modified; Save(); } public int NewId() { // Not sure if properties need it return 0; } } }