Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
bin
obj
node_modules
node_modules
.vscode
46 changes: 0 additions & 46 deletions .vscode/launch.json

This file was deleted.

15 changes: 0 additions & 15 deletions .vscode/tasks.json

This file was deleted.

16 changes: 16 additions & 0 deletions BackEnd/API.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<Project Sdk="Microsoft.NET.Sdk.Web">

<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
</PropertyGroup>

<ItemGroup>
<Folder Include="wwwroot\" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="MongoDB.Driver" Version="2.7.2" />
</ItemGroup>

</Project>
9 changes: 9 additions & 0 deletions BackEnd/Constantes/SituacaoDeAluguel.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
namespace API.Models
{
public static class SituacaoDeAluguel
{
public const string EmAberto = "Em Aberto";
public const string Pago = "Pago";
}

}
9 changes: 9 additions & 0 deletions BackEnd/Constantes/SituacaoDeApartamento.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
namespace API.Models
{
public static class SituacaoDeApartamento
{
public const string Alugado = "Alugado";
public const string Desocupado = "Desocupado";
}

}
9 changes: 9 additions & 0 deletions BackEnd/Constantes/SituacaoDeContrato.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
namespace API.Models
{
public static class SituacaoDeContrato
{
public const string EmAndamento = "Em Andamento";
public const string Encerrado = "Encerrado";
}

}
102 changes: 102 additions & 0 deletions BackEnd/Controllers/AlugueisController.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
// using Microsoft.AspNetCore.Authorization;
// using Microsoft.AspNetCore.Mvc;
// using System.Threading.Tasks;
// using API.ViewModels;
// using Dominio.Modelo;
// using MongoDB.Driver;
// using MongoDB.Bson;
// using API.Data;
// using System.Linq;
// using System;
// using API.Extensions;

// namespace API.Controllers
// {
// [Authorize]
// public class AlugueisController : Controller
// {
// private readonly Contexto db;

// public AlugueisController(Contexto db)
// {
// this.db = db;
// }

// public async Task<IActionResult> Index()
// {
// var filter = Builders<Contrato>.Filter.Eq(a => a.Situacao, SituacaoDeContrato.EmAndamento);

// var contratosEmAndamento = await db.Contratos.Find(filter).ToListAsync();

// var daquiTrintaDias = DateTime.Today.AddDays(30);

// var alugueis = contratosEmAndamento
// .SelectMany(a => a.Alugueis, (contrato, aluguel) => new AluguelVM(contrato, aluguel))
// .Where(a =>
// a.Vencimento <= daquiTrintaDias &&
// a.Situacao == SituacaoDeAluguel.EmAberto)
// .OrderBy(a => a.Vencimento);

// return View(alugueis);
// }

// public async Task<IActionResult> RegistrarPagamento(string Id)
// {
// var filter = Builders<Contrato>.Filter.Eq("Alugueis.Id", Id);

// var contrato = await db.Contratos.Find(filter).FirstOrDefaultAsync();

// if (contrato is null)
// NotFound();

// if (!contrato.PodeEditar())
// throw new InvalidOperationException("Este contrato já foi encerrado!");

// var aluguel = contrato.Alugueis.FirstOrDefault(a => a.Id == Id);

// var viewmodel = new PagamentoDeAluguelVM(aluguel, contrato);

// return View(viewmodel);
// }

// [HttpPost]
// public async Task<IActionResult> RegistrarPagamento(PagamentoDeAluguelVM model)
// {
// if (ModelState.IsValid)
// {
// var filter = Builders<Contrato>.Filter.Eq("Alugueis.Id", model.Id);

// var update = Builders<Contrato>.Update
// .Set("Alugueis.$.ValorPago", model.ValorPago)
// .Set("Alugueis.$.Observacao", model.Observacao)
// .Set("Alugueis.$.Situacao", "Pago")
// .Set("Alugueis.$.DataDePagamento", model.DataDePagamento);

// await db.Contratos.UpdateOneAsync(filter, update);
// this.NotificarSucesso();

// return RedirectToAction("Detalhes", "Contratos", new {id = model.ContratoId});
// }

// return View(model);
// }

// public async Task<IActionResult> Recibo(string Id)
// {
// var filter = Builders<Contrato>.Filter.Eq("Alugueis.Id", Id);

// var contrato = await db.Contratos.Find(filter).FirstOrDefaultAsync();

// if (contrato is null)
// NotFound();

// var aluguel = contrato.Alugueis.FirstOrDefault(a => a.Id == Id);

// var viewmodel = new ReciboVM(aluguel, contrato);

// return View(viewmodel);
// }

// }

// }
86 changes: 86 additions & 0 deletions BackEnd/Controllers/ApartamentosController.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;
using API.ViewModels;
using MongoDB.Driver;
using MongoDB.Bson;
using API.Models;
using API.Data;

namespace API.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class ApartamentosController : ControllerBase
{
private readonly Contexto db;

public ApartamentosController(Contexto db) => this.db = db;

[HttpGet]
public async Task<IActionResult> Get()
{
var lista = await db.Apartamentos.ListarTodosAsync();
return Ok(lista);
}

[HttpGet("{id}")]
public async Task<IActionResult> Get(string id)
{
var model = await db.Apartamentos.FindAsync(id);

if (model is null)
return NotFound();

return Ok(model);
}

[HttpPost]
public async Task<IActionResult> Post([FromBody] ApartamentoVM viewmodel)
{
if (ModelState.IsValid)
{
var apartamento = new Apartamento(viewmodel.Endereco, viewmodel.Apelido);
await db.Apartamentos.InsertOneAsync(apartamento);
return Created(nameof(Get), apartamento);
}

return BadRequest();
}


[HttpPut("{id}")]
public async Task<IActionResult> Put(string id, [FromBody] ApartamentoVM viewmodel)
{
if (ModelState.IsValid)
{
await AtualizarApartamentosDosContratos(viewmodel);
await AtualizarApartamento(viewmodel);
return Accepted(nameof(Get), viewmodel);
}

return BadRequest();
}

private async Task AtualizarApartamentosDosContratos(ApartamentoVM viewmodel)
{
var filter = Builders<Contrato>.Filter.Eq(a => a.Apartamento.Id, ObjectId.Parse(viewmodel.Id));

var update = Builders<Contrato>.Update
.Set(a => a.Apartamento.Apelido, viewmodel.Apelido)
.Set(a => a.Apartamento.Endereco, viewmodel.Endereco);

await db.Contratos.UpdateManyAsync(filter, update);
}

private async Task AtualizarApartamento(ApartamentoVM viewmodel)
{
var filter = Builders<Apartamento>.Filter.Eq(a => a.Id, ObjectId.Parse(viewmodel.Id));

var update = Builders<Apartamento>.Update
.Set(a => a.Apelido, viewmodel.Apelido)
.Set(a => a.Endereco, viewmodel.Endereco);

await db.Apartamentos.UpdateOneAsync(filter, update);
}
}
}
Loading