using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Linq.Expressions; using System.Data.Entity; using SharedLibrary.Interfaces; using SharedLibrary.Database.Models; using SharedLibrary.Database; namespace SharedLibrary.Services { public class AliasService : IEntityService { public async Task Create(EFAlias entity) { throw new Exception(); using (var context = new DatabaseContext()) { var alias = new EFAlias() { Active = true, DateAdded = DateTime.UtcNow, IPAddress = entity.IPAddress, Name = entity.Name }; entity.Link = await context.AliasLinks .FirstAsync(a => a.AliasLinkId == entity.Link.AliasLinkId); context.Aliases.Add(entity); await context.SaveChangesAsync(); return entity; } } public Task CreateProxy() { return null; } public async Task Delete(EFAlias entity) { using (var context = new DatabaseContext()) { var alias = context.Aliases .Single(e => e.AliasId == entity.AliasId); alias.Active = false; await context.SaveChangesAsync(); return entity; } } public async Task> Find(Func expression) { return await Task.Run(() => { using (var context = new DatabaseContext()) return context.Aliases .AsNoTracking() .Include(a => a.Link.Children) .Where(expression) .ToList(); }); } public async Task Get(int entityID) { using (var context = new DatabaseContext()) return await context.Aliases .AsNoTracking() .SingleOrDefaultAsync(e => e.AliasId == entityID); } public Task GetUnique(string entityProperty) { throw new NotImplementedException(); } public async Task Update(EFAlias entity) { throw new Exception(); using (var context = new DatabaseContext()) { entity = context.Aliases.Attach(entity); context.Entry(entity).State = EntityState.Modified; await context.SaveChangesAsync(); return entity; } } public async Task CreateLink(EFAliasLink link) { using (var context = new DatabaseContext()) { context.AliasLinks.Add(link); await context.SaveChangesAsync(); return link; } } } }