CodeLiturgy.Dashboard/BlueWest.Api/Context/Extensions/CountryDbExtensions.cs

62 lines
2.2 KiB
C#

using System.Linq;
using System.Threading.Tasks;
using BlueWest.Data;
using Microsoft.EntityFrameworkCore;
namespace BlueWest.WebApi.EF
{
internal static class CountryDbExtensions
{
internal static Country GetCountryById(this DbSet<Country> countries, int countryId) => countries.GetOne(x => x.Id == countryId);
internal static (bool, T) NotFound<T>() where T : class => (false, null);
internal static (bool, Country) AddCountry (this CountryDbContext dbContext, CountryCreate countryCreate)
{
Country newCountry = new Country(countryCreate);
return dbContext.Countries.Add(dbContext, newCountry);
}
internal static async Task<(bool, Country)> AddCountryAsync (this CountryDbContext dbContext, CountryCreate countryCreate)
{
var newCountry = new Country(countryCreate);
return await dbContext.Countries.AddAsync(dbContext, newCountry);
}
internal static (bool, Country) UpdateCountry(this CountryDbContext dbContext, CountryUpdate countryUpdate,
int countryId)
{
var country = dbContext.Countries.FirstOrDefault(x => x.Id == countryId);
if (country != null)
{
var updatedCountry = new Country(countryUpdate);
return dbContext.Countries.Update(dbContext, updatedCountry);
}
return NotFound<Country>();
}
internal static async Task<Country> GetCountryByIdAsync(this DbSet<Country> countries, int countryId) =>
await countries.FirstOrDefaultAsync(x => x.Id == countryId);
internal static async Task<(bool, Country)> UpdateCountryAsync(this CountryDbContext dbContext, CountryUpdate countryUpdate,
int countryCode)
{
var country = await dbContext.Countries.FirstOrDefaultAsync(x => x.Code == countryCode);
if (country != null)
{
var updatedCountry = new Country(countryUpdate);
return await dbContext.Countries.UpdateAsync(dbContext, updatedCountry);
}
return NotFound<Country>();
}
}
}