forked from ddrilling/AsbCloudServer
add CrudController
This commit is contained in:
parent
10e7b436c5
commit
4cb797e9c8
7
AsbCloudApp/Data/IId.cs
Normal file
7
AsbCloudApp/Data/IId.cs
Normal file
@ -0,0 +1,7 @@
|
||||
namespace AsbCloudApp.Data
|
||||
{
|
||||
public interface IId
|
||||
{
|
||||
public int Id { get; set; }
|
||||
}
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
namespace AsbCloudApp.Data
|
||||
{
|
||||
|
||||
public class WellDto : WellInfoDto, IMapPoint
|
||||
public class WellDto : WellInfoDto, IMapPoint, IId
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public double? Latitude { get; set; }
|
||||
|
@ -6,7 +6,7 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudApp.Data
|
||||
{
|
||||
public class WellOperationDto
|
||||
public class WellOperationDto : IId
|
||||
{
|
||||
public int Id { get; set; }
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
namespace AsbCloudApp.Data
|
||||
{
|
||||
public class WellSectionDto
|
||||
public class WellSectionDto: IId
|
||||
{
|
||||
public int Id { get; set; }
|
||||
/// <summary>
|
||||
|
@ -3,8 +3,9 @@ using System.Collections.Generic;
|
||||
|
||||
namespace AsbCloudApp.Data
|
||||
{
|
||||
public class WellStatDto : WellDto
|
||||
public class WellStatDto : WellDto, IId
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public DateTime? PlanStart { get; set; }
|
||||
public DateTime? PlanEnd { get; set; }
|
||||
public DateTime? FactStart { get; set; }
|
||||
|
17
AsbCloudApp/Services/ICrudService.cs
Normal file
17
AsbCloudApp/Services/ICrudService.cs
Normal file
@ -0,0 +1,17 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq.Expressions;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
public interface ICrudService<Tdto>
|
||||
where Tdto : Data.IId
|
||||
{
|
||||
int Delete(int id);
|
||||
Tdto Get(int id);
|
||||
IEnumerable<Tdto> GetAll(Expression<Func<object, bool>> predicate = null);
|
||||
Tdto Insert(Tdto newItem);
|
||||
IEnumerable<Tdto> InsertRange(IEnumerable<Tdto> newItems);
|
||||
Tdto Update(Tdto item);
|
||||
}
|
||||
}
|
@ -8,8 +8,9 @@ using Microsoft.Extensions.Configuration;
|
||||
|
||||
namespace AsbCloudInfrastructure.Services
|
||||
{
|
||||
public class CrudService<Tdto, TModel>
|
||||
where TModel : class, IId
|
||||
public class CrudService<Tdto, TModel> : ICrudService<Tdto>
|
||||
where TModel : class, AsbCloudDb.Model.IId
|
||||
where Tdto : AsbCloudApp.Data.IId
|
||||
{
|
||||
private readonly DbContext context;
|
||||
private readonly IAsbCloudDbContext db;
|
||||
@ -21,11 +22,11 @@ namespace AsbCloudInfrastructure.Services
|
||||
dbSet = context.Set<TModel>();
|
||||
}
|
||||
|
||||
public IEnumerable<Tdto> GetAll(System.Linq.Expressions.Expression< System.Func<TModel, bool>> predicate = null)
|
||||
public IEnumerable<Tdto> GetAll(System.Linq.Expressions.Expression<System.Func<TModel, bool>> predicate = null)
|
||||
{
|
||||
IQueryable<TModel> entities = dbSet;
|
||||
|
||||
if(predicate is not null)
|
||||
if (predicate is not null)
|
||||
entities = entities.Where(predicate);
|
||||
|
||||
var dto = entities.Adapt<Tdto>();
|
||||
@ -50,7 +51,7 @@ namespace AsbCloudInfrastructure.Services
|
||||
|
||||
public IEnumerable<Tdto> InsertRange(IEnumerable<Tdto> newItems)
|
||||
{
|
||||
var newEntities = newItems.Adapt< IEnumerable<TModel>>();
|
||||
var newEntities = newItems.Adapt<IEnumerable<TModel>>();
|
||||
var dbEntities = new Microsoft.EntityFrameworkCore.ChangeTracking.EntityEntry<TModel>[newItems.Count()];
|
||||
|
||||
for (int i = 0; i < dbEntities.Length; i++)
|
||||
|
70
AsbCloudWebApi/Controllers/CrudController.cs
Normal file
70
AsbCloudWebApi/Controllers/CrudController.cs
Normal file
@ -0,0 +1,70 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using System.Collections.Generic;
|
||||
using AsbCloudApp.Data;
|
||||
using AsbCloudApp.Services;
|
||||
|
||||
// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
|
||||
|
||||
namespace AsbCloudWebApi.Controllers
|
||||
{
|
||||
[ApiController]
|
||||
public abstract class CrudController<T> : ControllerBase
|
||||
where T: IId
|
||||
{
|
||||
protected readonly ICrudService<T> service;
|
||||
|
||||
public CrudController(ICrudService<T> service)
|
||||
{
|
||||
this.service = service;
|
||||
}
|
||||
|
||||
// GET: api/<CrudController>
|
||||
//[HttpGet]
|
||||
//public virtual IActionResult GetAll()
|
||||
//{
|
||||
// var result = service.GetAll();
|
||||
// return Ok(result);
|
||||
//}
|
||||
|
||||
// GET api/<CrudController>/5
|
||||
[HttpGet("{id}")]
|
||||
|
||||
public virtual IActionResult Get(int id)
|
||||
{
|
||||
var result = service.Get(id);
|
||||
return Ok(result);
|
||||
}
|
||||
|
||||
// POST api/<CrudController>
|
||||
[HttpPost]
|
||||
public virtual IActionResult Insert([FromBody] T value)
|
||||
{
|
||||
var result = service.Insert(value);
|
||||
return Ok(result);
|
||||
}
|
||||
|
||||
//[HttpPost]
|
||||
//[Route("Range/")]
|
||||
//public virtual IActionResult InsertRange([FromBody] IEnumerable<T> value)
|
||||
//{
|
||||
// var result = service.InsertRange(value);
|
||||
// return Ok(result);
|
||||
//}
|
||||
|
||||
// PUT api/<CrudController>/5
|
||||
[HttpPut("{id}")]
|
||||
public virtual IActionResult Put(int id, [FromBody] T value)
|
||||
{
|
||||
var result = service.Update(value);
|
||||
return Ok(result);
|
||||
}
|
||||
|
||||
// DELETE api/<CrudController>/5
|
||||
[HttpDelete("{id}")]
|
||||
public virtual IActionResult Delete(int id)
|
||||
{
|
||||
var result = service.Delete(id);
|
||||
return Ok(result);
|
||||
}
|
||||
}
|
||||
}
|
32
AsbCloudWebApi/Controllers/WellSectionController.cs
Normal file
32
AsbCloudWebApi/Controllers/WellSectionController.cs
Normal file
@ -0,0 +1,32 @@
|
||||
using AsbCloudApp.Data;
|
||||
using AsbCloudApp.Services;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudWebApi.Controllers
|
||||
{
|
||||
[Route("api/well/{idWell}")]
|
||||
[ApiController]
|
||||
[Authorize]
|
||||
public class WellSectionController : CrudController<WellSectionDto>
|
||||
{
|
||||
public WellSectionController(ICrudService<WellSectionDto> service)
|
||||
:base(service)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[Route("")]
|
||||
public virtual IActionResult GetAll()
|
||||
{
|
||||
var result = service.GetAll();
|
||||
return Ok(result);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user