repository migration

This commit is contained in:
2025-05-20 11:46:50 -04:00
commit bf536b8774
213 changed files with 117679 additions and 0 deletions
@@ -0,0 +1,28 @@
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
using WhiteLagoon.Application.Common.Interfaces;
using WhiteLagoon.Domain.Entities;
using WhiteLagoon.Infrastructure.Data;
namespace WhiteLagoon.Infrastructure.Repository
{
public class AmenityRepository : Repository<Amenity>, IAmenityRepository
{
private readonly ApplicationDbContext _db;
public AmenityRepository(ApplicationDbContext db) : base(db)
{
_db = db;
}
public void Update(Amenity entity)
{
_db.Amenities.Update(entity);
}
}
}
@@ -0,0 +1,24 @@
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
using WhiteLagoon.Application.Common.Interfaces;
using WhiteLagoon.Domain.Entities;
using WhiteLagoon.Infrastructure.Data;
namespace WhiteLagoon.Infrastructure.Repository
{
public class ApplicationUserRepository : Repository<ApplicationUser>, IApplicationUserRepository
{
private readonly ApplicationDbContext _db;
public ApplicationUserRepository(ApplicationDbContext db) : base(db)
{
_db = db;
}
}
}
@@ -0,0 +1,31 @@
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
using WhiteLagoon.Application.Common.Interfaces;
using WhiteLagoon.Application.Common.Utility;
using WhiteLagoon.Domain.Entities;
using WhiteLagoon.Infrastructure.Data;
namespace WhiteLagoon.Infrastructure.Repository
{
public class BookingRepository : Repository<Booking>, IBookingRepository
{
private readonly ApplicationDbContext _db;
public BookingRepository(ApplicationDbContext db) : base(db)
{
_db = db;
}
public void Update(Booking entity)
{
_db.Bookings.Update(entity);
}
}
}
@@ -0,0 +1,91 @@
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
using WhiteLagoon.Application.Common.Interfaces;
using WhiteLagoon.Domain.Entities;
using WhiteLagoon.Infrastructure.Data;
namespace WhiteLagoon.Infrastructure.Repository
{
public class Repository<T> : IRepository<T> where T : class
{
private readonly ApplicationDbContext _db;
internal DbSet<T> dbSet;
public Repository(ApplicationDbContext db)
{
_db = db;
dbSet = _db.Set<T>();
}
public void Add(T entity)
{
dbSet.Add(entity);
}
public bool Any(Expression<Func<T, bool>> filter)
{
return dbSet.Any(filter);
}
public T Get(Expression<Func<T, bool>> filter, string? includeProperties = null, bool tracked = false)
{
IQueryable<T> query;
if (tracked)
{
query = dbSet;
}
else
{
query=dbSet.AsNoTracking();
}
if (filter != null)
{
query = query.Where(filter);
}
if (!string.IsNullOrEmpty(includeProperties))
{
//Villa,VillaNumber -- case sensitive
foreach (var includeProp in includeProperties
.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
{
query = query.Include(includeProp.Trim());
}
}
return query.FirstOrDefault();
}
public IEnumerable<T> GetAll(Expression<Func<T, bool>>? filter = null, string? includeProperties = null, bool tracked = false)
{
IQueryable<T> query;
if (tracked)
{
query = dbSet;
}
else
{
query = dbSet.AsNoTracking();
}
if (filter != null)
{
query = query.Where(filter);
}
if (!string.IsNullOrEmpty(includeProperties))
{
foreach (var includeProp in includeProperties
.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
{
query = query.Include(includeProp.Trim());
}
}
return query.ToList();
}
public void Remove(T entity)
{
dbSet.Remove(entity);
}
}
}
@@ -0,0 +1,34 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WhiteLagoon.Application.Common.Interfaces;
using WhiteLagoon.Infrastructure.Data;
namespace WhiteLagoon.Infrastructure.Repository
{
public class UnitOfWork : IUnitOfWork
{
private readonly ApplicationDbContext _db;
public IVillaRepository Villa {get; private set;}
public IApplicationUserRepository User { get; private set; }
public IAmenityRepository Amenity { get; private set; }
public IBookingRepository Booking { get; private set; }
public IVillaNumberRepository VillaNumber { get; private set;}
public UnitOfWork(ApplicationDbContext db)
{
_db = db;
Villa = new VillaRepository(_db);
User = new ApplicationUserRepository(_db);
Booking = new BookingRepository(_db);
Amenity = new AmenityRepository(_db);
VillaNumber = new VillaNumberRepository(_db);
}
public void Save()
{
_db.SaveChanges();
}
}
}
@@ -0,0 +1,28 @@
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
using WhiteLagoon.Application.Common.Interfaces;
using WhiteLagoon.Domain.Entities;
using WhiteLagoon.Infrastructure.Data;
namespace WhiteLagoon.Infrastructure.Repository
{
public class VillaNumberRepository : Repository<VillaNumber>, IVillaNumberRepository
{
private readonly ApplicationDbContext _db;
public VillaNumberRepository(ApplicationDbContext db) : base(db)
{
_db = db;
}
public void Update(VillaNumber entity)
{
_db.VillaNumbers.Update(entity);
}
}
}
@@ -0,0 +1,28 @@
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
using WhiteLagoon.Application.Common.Interfaces;
using WhiteLagoon.Domain.Entities;
using WhiteLagoon.Infrastructure.Data;
namespace WhiteLagoon.Infrastructure.Repository
{
public class VillaRepository : Repository<Villa>, IVillaRepository
{
private readonly ApplicationDbContext _db;
public VillaRepository(ApplicationDbContext db) : base(db)
{
_db = db;
}
public void Update(Villa entity)
{
_db.Villas.Update(entity);
}
}
}