forked from MDCPS/DamageAssessment_Backend
Copy from old Repository
This commit is contained in:
@ -0,0 +1,147 @@
|
||||
using AutoMapper;
|
||||
using DamageAssesment.Api.Locations.Db;
|
||||
using DamageAssesment.Api.Locations.Interfaces;
|
||||
using DamageAssesment.Api.Locations.Models;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace DamageAssesment.Api.Locations.Providers
|
||||
{
|
||||
public class LocationsProvider : ILocationsProvider
|
||||
{
|
||||
private LocationDbContext locationDbContext;
|
||||
private ILogger<LocationsProvider> logger;
|
||||
private IMapper mapper;
|
||||
|
||||
public LocationsProvider(LocationDbContext locationDbContext, ILogger<LocationsProvider> logger, IMapper mapper)
|
||||
{
|
||||
this.locationDbContext = locationDbContext;
|
||||
this.logger = logger;
|
||||
this.mapper = mapper;
|
||||
SeedData();
|
||||
}
|
||||
|
||||
public async Task<(bool IsSuccess, IEnumerable<Models.Location> locations, string ErrorMessage)> GetLocationsAsync()
|
||||
{
|
||||
|
||||
try
|
||||
{
|
||||
logger?.LogInformation("Query Question");
|
||||
var Location = await locationDbContext.Locations.AsNoTracking().ToListAsync();
|
||||
if (Location != null)
|
||||
{
|
||||
logger?.LogInformation($"{Location.Count} Locations(s) found");
|
||||
var result = mapper.Map<IEnumerable<Db.Location>, IEnumerable<Models.Location>>(Location);
|
||||
return (true, result, null);
|
||||
}
|
||||
return (false, null, "Not found");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger?.LogError(ex.ToString());
|
||||
return (false, null, ex.Message);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public async Task<(bool IsSuccess, Models.Location Location, string ErrorMessage)> GetLocationByIdAsync(string Id)
|
||||
{
|
||||
try
|
||||
{
|
||||
logger?.LogInformation("Query Location");
|
||||
var Location = await locationDbContext.Locations.AsNoTracking().FirstOrDefaultAsync(q => q.Id == Id);
|
||||
if (Location != null)
|
||||
{
|
||||
logger?.LogInformation($"{Location} customer(s) found");
|
||||
var result = mapper.Map<Db.Location, Models.Location>(Location);
|
||||
return (true, result, null);
|
||||
}
|
||||
return (false, null, "Not found");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger?.LogError(ex.ToString());
|
||||
return (false, null, ex.Message);
|
||||
}
|
||||
}
|
||||
public async Task<(bool IsSuccess, Models.Location Question, string ErrorMessage)> PostLocationAsync(Db.Location Location)
|
||||
{
|
||||
try
|
||||
{
|
||||
logger?.LogInformation("Query Location");
|
||||
if (!LocationExists(Location.Id))
|
||||
{
|
||||
locationDbContext.Locations.Add(Location);
|
||||
locationDbContext.SaveChanges();
|
||||
var result = mapper.Map<Db.Location, Models.Location>(Location);
|
||||
return (true, result, null);
|
||||
}
|
||||
else
|
||||
{
|
||||
return (false, null, "Location is Already exists");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger?.LogError(ex.ToString());
|
||||
return (false, null, ex.Message);
|
||||
}
|
||||
}
|
||||
public async Task<(bool IsSuccess, string ErrorMessage)> UpdateLocationAsync(Db.Location Location)
|
||||
{
|
||||
try
|
||||
{
|
||||
locationDbContext.Entry(Location).State = EntityState.Modified;
|
||||
locationDbContext.SaveChanges();
|
||||
return (true, "Record updated successfully");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
logger?.LogError(ex.ToString());
|
||||
return (false, ex.Message);
|
||||
}
|
||||
}
|
||||
public async Task<(bool IsSuccess, string ErrorMessage)> DeleteLocationAsync(string Id)
|
||||
{
|
||||
try
|
||||
{
|
||||
Db.Location Location = locationDbContext.Locations.AsNoTracking().Where(a => a.Id == Id).FirstOrDefault();
|
||||
if (Location == null)
|
||||
{
|
||||
return (false, "record not found");
|
||||
}
|
||||
locationDbContext.Locations.Remove(Location);
|
||||
locationDbContext.SaveChanges();
|
||||
return (true, "Record deleted successfully");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
logger?.LogError(ex.ToString());
|
||||
return (false, ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
private bool LocationExists(string id)
|
||||
{
|
||||
return locationDbContext.Locations.AsNoTracking().Count(e => e.Id == id) > 0;
|
||||
}
|
||||
private void SeedData()
|
||||
{
|
||||
if (!locationDbContext.Locations.Any())
|
||||
{
|
||||
locationDbContext.Locations.Add(new Db.Location() { Id = "Loc1", RegionId = "1", Name = "BOB GRAHAM EDUCATION CENTER 1", MaintenanceCenter = "1", SchoolType = "US" });
|
||||
locationDbContext.Locations.Add(new Db.Location() { Id = "Loc2", RegionId = "2", Name = "BOB GRAHAM EDUCATION CENTER 2", MaintenanceCenter = "1", SchoolType = "US" });
|
||||
locationDbContext.Locations.Add(new Db.Location() { Id = "Loc3", RegionId = "3", Name = "BOB GRAHAM EDUCATION CENTER 3", MaintenanceCenter = "1", SchoolType = "US" });
|
||||
locationDbContext.Locations.Add(new Db.Location() { Id = "Loc4", RegionId = "1", Name = "BOB GRAHAM EDUCATION CENTER 4", MaintenanceCenter = "1", SchoolType = "US" });
|
||||
locationDbContext.Locations.Add(new Db.Location() { Id = "Loc5", RegionId = "2", Name = "BOB GRAHAM EDUCATION CENTER 5", MaintenanceCenter = "1", SchoolType = "US" });
|
||||
locationDbContext.Locations.Add(new Db.Location() { Id = "Loc6", RegionId = "3", Name = "BOB GRAHAM EDUCATION CENTER 6", MaintenanceCenter = "1", SchoolType = "US" });
|
||||
locationDbContext.SaveChanges();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,164 @@
|
||||
using AutoMapper;
|
||||
using DamageAssesment.Api.Locations.Db;
|
||||
using DamageAssesment.Api.Locations.Interfaces;
|
||||
using DamageAssesment.Api.Locations.Models;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace DamageAssesment.Api.Locations.Providers
|
||||
{
|
||||
public class RegionsProvider : IRegionsProvider
|
||||
{
|
||||
private LocationDbContext locationDbContext;
|
||||
private ILogger<RegionsProvider> logger;
|
||||
private IMapper mapper;
|
||||
|
||||
public RegionsProvider(LocationDbContext regionDbContext, ILogger<RegionsProvider> logger, IMapper mapper)
|
||||
{
|
||||
this.locationDbContext = regionDbContext;
|
||||
this.logger = logger;
|
||||
this.mapper = mapper;
|
||||
SeedData();
|
||||
}
|
||||
|
||||
public async Task<(bool IsSuccess, Models.Region Region, string ErrorMessage)> GetRegionByIdAsync(string Id)
|
||||
{
|
||||
try
|
||||
{
|
||||
logger?.LogInformation("Get Regions from DB");
|
||||
var region = await locationDbContext.Regions.AsNoTracking().FirstOrDefaultAsync(s => s.Id == Id);
|
||||
|
||||
if (region != null)
|
||||
{
|
||||
logger?.LogInformation($"RegionId: {region.Id} Items found");
|
||||
var result = mapper.Map<Db.Region, Models.Region>(region);
|
||||
return (true, result, null);
|
||||
}
|
||||
return (false, null, "Not found");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger?.LogError(ex.ToString());
|
||||
return (false, null, ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<(bool IsSuccess, IEnumerable<Models.Region> regions, string ErrorMessage)> GetRegionsAsync()
|
||||
{
|
||||
try
|
||||
{
|
||||
logger?.LogInformation("Get all Regions from DB");
|
||||
var regions = await locationDbContext.Regions.AsNoTracking().ToListAsync();
|
||||
|
||||
if (regions != null)
|
||||
{
|
||||
logger?.LogInformation($"{regions.Count} Items(s) found");
|
||||
var result = mapper.Map<IEnumerable<Db.Region>, IEnumerable<Models.Region>>(regions);
|
||||
return (true, result, null);
|
||||
}
|
||||
return (false, null, "Not found");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger?.LogError(ex.ToString());
|
||||
return (false, null, ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<(bool IsSuccess, Models.Region Region, string ErrorMessage)> PostRegionAsync(Models.Region region)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (region != null)
|
||||
{
|
||||
var regions = await locationDbContext.Regions.AsNoTracking().ToListAsync();
|
||||
|
||||
region.Id = Convert.ToString(regions.Count + 1);
|
||||
locationDbContext.Regions.Add(mapper.Map<Models.Region, Db.Region>(region));
|
||||
locationDbContext.SaveChanges();
|
||||
logger?.LogInformation($"{region} added successfuly");
|
||||
return (true, region, "Successful");
|
||||
}
|
||||
else
|
||||
{
|
||||
logger?.LogInformation($"{region} cannot be added");
|
||||
return (false, null, "Region cannot be added");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger?.LogError(ex.ToString());
|
||||
return (false, null, ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<(bool IsSuccess, Models.Region Region, string ErrorMessage)> PutRegionAsync(Models.Region region)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (region != null)
|
||||
{
|
||||
var _region = await locationDbContext.Regions.AsNoTracking().Where(s => s.Id == region.Id).FirstOrDefaultAsync();
|
||||
|
||||
if (_region != null)
|
||||
{
|
||||
locationDbContext.Regions.Update(mapper.Map<Models.Region, Db.Region>(region));
|
||||
locationDbContext.SaveChanges();
|
||||
return (true, region, "Region updated Successfuly");
|
||||
}
|
||||
else
|
||||
{
|
||||
logger?.LogInformation($"RegionID: {region.Id} Not found");
|
||||
return (false, null, "Not Found");
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
logger?.LogInformation($"RegionID: {region.Id} Bad Request");
|
||||
return (false, null, "Bad request");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger?.LogError(ex.ToString());
|
||||
return (false, null, ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<(bool IsSuccess, Models.Region Region, string ErrorMessage)> DeleteRegionAsync(string Id)
|
||||
{
|
||||
try
|
||||
{
|
||||
var region = await locationDbContext.Regions.AsNoTracking().Where(x => x.Id == Id).FirstOrDefaultAsync();
|
||||
|
||||
if (region != null)
|
||||
{
|
||||
locationDbContext.Regions.Remove(region);
|
||||
locationDbContext.SaveChanges();
|
||||
return (true, mapper.Map<Db.Region, Models.Region>(region), $"RegionId {Id} deleted Successfuly");
|
||||
}
|
||||
else
|
||||
{
|
||||
logger?.LogInformation($"RegionID: {Id} Not found");
|
||||
return (false, null, "Not Found");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger?.LogError(ex.ToString());
|
||||
return (false, null, ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
private void SeedData()
|
||||
{
|
||||
if (!locationDbContext.Regions.Any())
|
||||
{
|
||||
locationDbContext.Regions.Add(new Db.Region() { Id = "1", Name = "North", Abbreviation = "N" });
|
||||
locationDbContext.Regions.Add(new Db.Region() { Id = "2", Name = "South", Abbreviation = "S" });
|
||||
locationDbContext.Regions.Add(new Db.Region() { Id = "3", Name = "Central", Abbreviation = "C" });
|
||||
locationDbContext.SaveChanges();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user