dev #9
@ -6,123 +6,123 @@ using Microsoft.EntityFrameworkCore;
|
|||||||
|
|
||||||
namespace Cloud.Controllers
|
namespace Cloud.Controllers
|
||||||
{
|
{
|
||||||
[Authorize]
|
[Authorize]
|
||||||
[ApiController]
|
[ApiController]
|
||||||
[Route("api/user")]
|
[Route("api/user")]
|
||||||
public class FarmController : ControllerBase
|
public class FarmController : ControllerBase
|
||||||
{
|
{
|
||||||
private IConfiguration _config;
|
private IConfiguration _config;
|
||||||
private ApplicationContext _context;
|
private ApplicationContext _context;
|
||||||
|
|
||||||
public FarmController(IConfiguration config, ApplicationContext context)
|
public FarmController(IConfiguration config, ApplicationContext context)
|
||||||
{
|
{
|
||||||
_config = config;
|
_config = config;
|
||||||
_context = context;
|
_context = context;
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("{userId}/farm")]
|
[HttpGet("{userId}/farm")]
|
||||||
public async Task<ActionResult<List<Farm>>> Index (int userId)
|
public async Task<ActionResult<List<Farm>>> Index(int userId)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
List<Farm> farms = await
|
List<Farm> farms = await
|
||||||
_context.Farms.Where(x => x.UserId == userId).AsNoTracking().ToListAsync();
|
_context.Farms.Where(x => x.UserId == userId).AsNoTracking().ToListAsync();
|
||||||
if (!farms.Any())
|
if (!farms.Any())
|
||||||
return NotFound("Farms is not found");
|
return NotFound("Farms is not found");
|
||||||
|
|
||||||
return Ok(farms);
|
return Ok(farms);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
return BadRequest(ex.Message);
|
return BadRequest(ex.Message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("{userId}/farm/{farmId}")]
|
[HttpGet("{userId}/farm/{farmId}")]
|
||||||
public async Task<ActionResult<Farm>> Show(int userId, int farmId)
|
public async Task<ActionResult<Farm>> Show(int userId, int farmId)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Farm? farm = await
|
Farm? farm = await
|
||||||
_context.Farms.FirstOrDefaultAsync(x => x.UserId == userId && x.Id == farmId);
|
_context.Farms.FirstOrDefaultAsync(x => x.UserId == userId && x.Id == farmId);
|
||||||
|
|
||||||
if (farm == null)
|
if (farm == null)
|
||||||
return NotFound("Farm is not found");
|
return NotFound("Farm is not found");
|
||||||
|
|
||||||
return Ok(farm);
|
return Ok(farm);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
return BadRequest(ex.Message);
|
return BadRequest(ex.Message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("{userId}/farm")]
|
[HttpPost("{userId}/farm")]
|
||||||
public async Task<ActionResult<Farm>> Create([FromBody] FarmRequest farmRequest, int userId)
|
public async Task<ActionResult<Farm>> Create([FromBody] FarmRequest farmRequest, int userId)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var farm = new Farm {
|
var farm = new Farm
|
||||||
Name = farmRequest.Name,
|
{
|
||||||
UserId = userId,
|
Name = farmRequest.Name,
|
||||||
RaspberryMacAddr = farmRequest.RaspberryMacAddr,
|
UserId = userId,
|
||||||
};
|
RaspberryIP = farmRequest.RaspberryIP,
|
||||||
|
};
|
||||||
|
|
||||||
Farm? farmCreated = _context.Farms.Add(farm).Entity;
|
Farm? farmCreated = _context.Farms.Add(farm).Entity;
|
||||||
await _context.SaveChangesAsync();
|
await _context.SaveChangesAsync();
|
||||||
|
|
||||||
return Ok(farmCreated);
|
return Ok(farmCreated);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
return BadRequest(ex.Message);
|
return BadRequest(ex.Message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPut("{userId}/farm/{farmId}")]
|
[HttpPut("{userId}/farm/{farmId}")]
|
||||||
public async Task<ActionResult<Farm>> Update([FromBody] FarmRequest farmRequest, int userId, int farmId)
|
public async Task<ActionResult<Farm>> Update([FromBody] FarmRequest farmRequest, int userId, int farmId)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Farm? farm = await _context.Farms.FirstOrDefaultAsync(x => x.Id == farmId && x.UserId == userId);
|
Farm? farm = await _context.Farms.FirstOrDefaultAsync(x => x.Id == farmId && x.UserId == userId);
|
||||||
|
|
||||||
if (farm == null)
|
if (farm == null)
|
||||||
return NotFound("Farm is not found");
|
return NotFound("Farm is not found");
|
||||||
|
|
||||||
farm.Name = farmRequest.Name;
|
farm.Name = farmRequest.Name;
|
||||||
farm.RaspberryMacAddr = farmRequest.RaspberryMacAddr;
|
farm.RaspberryIP = farmRequest.RaspberryIP;
|
||||||
|
|
||||||
_context.Farms.Update(farm);
|
_context.Farms.Update(farm);
|
||||||
await _context.SaveChangesAsync();
|
await _context.SaveChangesAsync();
|
||||||
|
|
||||||
return Ok(farm);
|
return Ok(farm);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
return BadRequest(ex.Message);
|
return BadRequest(ex.Message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpDelete("{userId}/farm/{farmId}")]
|
[HttpDelete("{userId}/farm/{farmId}")]
|
||||||
public async Task<ActionResult> Delete(int userId, int farmId)
|
public async Task<ActionResult> Delete(int userId, int farmId)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Farm? farm = await _context.Farms.FirstOrDefaultAsync(x => x.Id == farmId && x.UserId == userId);
|
Farm? farm = await _context.Farms.FirstOrDefaultAsync(x => x.Id == farmId && x.UserId == userId);
|
||||||
|
|
||||||
if (farm == null)
|
if (farm == null)
|
||||||
return NotFound("Farm is not found");
|
return NotFound("Farm is not found");
|
||||||
|
|
||||||
_context.Farms.Remove(farm);
|
_context.Farms.Remove(farm);
|
||||||
await _context.SaveChangesAsync();
|
await _context.SaveChangesAsync();
|
||||||
|
|
||||||
return Ok("Farm deleted successfully");
|
return Ok("Farm deleted successfully");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
return BadRequest(ex.Message);
|
return BadRequest(ex.Message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
@ -1,12 +1,11 @@
|
|||||||
namespace Cloud.Models
|
namespace Cloud.Models
|
||||||
{
|
{
|
||||||
public class Farm
|
public class Farm
|
||||||
{
|
{
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
public int UserId { get; set; }
|
public int UserId { get; set; }
|
||||||
public User? User { get; set; }
|
public User? User { get; set; }
|
||||||
public string RaspberryMacAddr { get; set; }
|
public string RaspberryIP { get; set; }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
@ -1,8 +1,8 @@
|
|||||||
namespace Cloud.Requests
|
namespace Cloud.Requests
|
||||||
{
|
{
|
||||||
public class FarmRequest
|
public class FarmRequest
|
||||||
{
|
{
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
public string RaspberryMacAddr { get; set; }
|
public string RaspberryIP { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -3,16 +3,16 @@ using FluentValidation;
|
|||||||
|
|
||||||
namespace Cloud.Validation
|
namespace Cloud.Validation
|
||||||
{
|
{
|
||||||
public class FarmValidator : AbstractValidator<FarmRequest>
|
public class FarmValidator : AbstractValidator<FarmRequest>
|
||||||
{
|
{
|
||||||
public FarmValidator()
|
public FarmValidator()
|
||||||
{
|
{
|
||||||
RuleFor(request => request.RaspberryMacAddr)
|
RuleFor(request => request.RaspberryIP)
|
||||||
.NotEmpty().WithMessage("MAC address can't be empty")
|
.NotEmpty().WithMessage("IP address can't be empty")
|
||||||
.Matches("^([0-9A-Fa-f]{2}[:-]?){5}([0-9A-Fa-f]{2})$").WithMessage("MAC address is not valid");
|
.Matches(@"^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.?\b){4}$").WithMessage("IP address is not valid");
|
||||||
|
|
||||||
RuleFor(request => request.Name)
|
RuleFor(request => request.Name)
|
||||||
.NotEmpty().WithMessage("Name can't be empty");
|
.NotEmpty().WithMessage("Name can't be empty");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user