From d004d1a4bbd3dceaa80ea5aac18099476cc3d346 Mon Sep 17 00:00:00 2001 From: Alesandro <105898363+Alesandr0@users.noreply.github.com> Date: Wed, 7 Aug 2024 13:14:10 -0300 Subject: [PATCH 1/5] Update EventoController.cs --- .../Controllers/EventoController.cs | 214 +++++++++--------- 1 file changed, 104 insertions(+), 110 deletions(-) diff --git a/Codigo/GestaoGrupoMusicalWeb/Controllers/EventoController.cs b/Codigo/GestaoGrupoMusicalWeb/Controllers/EventoController.cs index fbe9fbb7..be21558f 100644 --- a/Codigo/GestaoGrupoMusicalWeb/Controllers/EventoController.cs +++ b/Codigo/GestaoGrupoMusicalWeb/Controllers/EventoController.cs @@ -10,7 +10,6 @@ using Microsoft.AspNetCore.Authorization; using Service; using Core.DTO; -using System.Security.Claims; namespace GestaoGrupoMusicalWeb.Controllers { @@ -20,18 +19,18 @@ public class EventoController : BaseController private readonly IEventoService _evento; private readonly IMapper _mapper; private readonly IGrupoMusicalService _grupoMusical; - private readonly IPessoaService _pessoaService; + private readonly IPessoaService _pessoa; private readonly IFigurinoService _figurino; private readonly IInstrumentoMusicalService _tipoIntrumentoMusical; - public EventoController(IEventoService evento, IMapper mapper, IGrupoMusicalService grupoMusical, IPessoaService pessoaService, IFigurinoService figurino, IInstrumentoMusicalService tipoInstrumentoMusical) + public EventoController(IEventoService evento, IMapper mapper, IGrupoMusicalService grupoMusical, IPessoaService pessoa, IFigurinoService figurino, IInstrumentoMusicalService tipoInstrumentoMusical) { _evento = evento; _mapper = mapper; _grupoMusical = grupoMusical; - _pessoaService = pessoaService; + _pessoa = pessoa; _figurino = figurino; _tipoIntrumentoMusical = tipoInstrumentoMusical; } @@ -62,7 +61,7 @@ public async Task Create() int idGrupoMusical = await _grupoMusical.GetIdGrupo(User.Identity.Name); - var listaPessoasAutoComplete = await _pessoaService.GetRegentesForAutoCompleteAsync(idGrupoMusical); + var listaPessoasAutoComplete = await _pessoa.GetRegentesForAutoCompleteAsync(idGrupoMusical); if (listaPessoasAutoComplete == null || !listaPessoasAutoComplete.Any()) { Notificar("É necessário cadastrar pelo menos um Regente para então cadastrar um Evento Musical.", Notifica.Informativo); @@ -91,19 +90,19 @@ public async Task Create() [ValidateAntiForgeryToken] public async Task Create(EventoCreateViewlModel eventoModel) { - + if (ModelState.IsValid && eventoModel.IdRegentes != null) { int idGrupoMusical = await _grupoMusical.GetIdGrupo(User.Identity.Name); eventoModel.IdGrupoMusical = idGrupoMusical; - - int auxIdPessoa = (await _pessoaService.GetByCpf(User.Identity.Name))?.Id ?? 0; + + int auxIdPessoa = (await _pessoa.GetByCpf(User.Identity.Name))?.Id ?? 0; if (auxIdPessoa != 0 && eventoModel.IdFigurinoSelecionado != 0) { Evento evento = _mapper.Map(eventoModel); evento.IdColaboradorResponsavel = auxIdPessoa; string mensagem = ""; - switch (await _evento.Create(evento, eventoModel.IdRegentes, eventoModel.IdFigurinoSelecionado)) + switch (await _evento.Create(evento,eventoModel.IdRegentes,eventoModel.IdFigurinoSelecionado)) { case HttpStatusCode.OK: Notificar("Evento Cadastrado com Sucesso", Notifica.Sucesso); @@ -132,92 +131,28 @@ public async Task Create(EventoCreateViewlModel eventoModel) } // GET: EventoController/Edit/5 - public async Task Edit(int id) + public ActionResult Edit(int id) { - var evento = _evento.Get(id); - if (evento == null) - { - Notificar("Evento não encontrado.", Notifica.Alerta); - return RedirectToAction(nameof(Index)); - } - var listaPessoasAutoComplete = await _pessoaService.GetRegentesForAutoCompleteAsync(evento.IdGrupoMusical); - if (listaPessoasAutoComplete == null || !listaPessoasAutoComplete.Any()) - { - Notificar("É necessário cadastrar pelo menos um Regente para então cadastrar um Evento Musical.", Notifica.Informativo); - return RedirectToAction(nameof(Index)); - } - var figurinosDropdown = await _figurino.GetAllFigurinoDropdown(evento.IdGrupoMusical); - - if (figurinosDropdown == null || !figurinosDropdown.Any()) - { - Notificar("É necessário cadastrar um Figurino para então cadastrar um Evento Musical.", Notifica.Informativo); - return RedirectToAction(nameof(Index)); - } - EventoCreateViewlModel eventoModelCreate = new() - { - Id = evento.Id, - IdGrupoMusical = evento.IdGrupoMusical, - DataHoraInicio = evento.DataHoraInicio, - DataHoraFim = evento.DataHoraFim, - Local = evento.Local, - Repertorio = evento.Repertorio, - ListaPessoa = new SelectList(listaPessoasAutoComplete, "Id", "Nome"), - FigurinoList = new SelectList(figurinosDropdown, "Id", "Nome") - }; + Console.WriteLine("ID" + id); - ViewData["exemploRegente"] = listaPessoasAutoComplete.Select(p => p.Nome).FirstOrDefault()?.Split(" ")[0]; - eventoModelCreate.JsonLista = listaPessoasAutoComplete.ToJson(); - return View(eventoModelCreate); + var evento = _evento.Get(id); + var eventoModel = _mapper.Map(evento); + eventoModel.ListaPessoa = new SelectList(_pessoa.GetAll(), "Id", "Nome"); + return View(eventoModel); } // POST: EventoController/Edit/5 [HttpPost] [ValidateAntiForgeryToken] - public async Task Edit(EventoCreateViewlModel eventoModel) + public ActionResult Edit(int id, EventoViewModel eventoModel) { - - if (ModelState.IsValid && eventoModel.IdFigurinoSelecionado != 0 && eventoModel.IdRegentes != null && eventoModel.IdRegentes.Any()) + if (ModelState.IsValid) { - var colaborador = await _pessoaService.GetByCpf(User.Identity?.Name); - if (colaborador == null) - { - return RedirectToAction("Sair", "Identity"); - } var evento = _mapper.Map(eventoModel); - evento.IdColaboradorResponsavel = colaborador.Id; - evento.IdGrupoMusical = colaborador.IdGrupoMusical; - if (eventoModel.IdFigurinoSelecionado != 0 && eventoModel.IdRegentes != null) - { - foreach (int idPessoa in eventoModel.IdRegentes) - { - evento.Eventopessoas.Add(new Eventopessoa() - { - IdPessoa = idPessoa, - IdEvento = evento.Id, - IdPapelGrupoPapelGrupo = 5, - IdTipoInstrumento = 0 - }); - } - evento.IdFigurinos.Add(new Figurino() { Id = eventoModel.IdFigurinoSelecionado }); - } - switch (_evento.Edit(evento)) - { - case HttpStatusCode.OK: - Notificar("Evento Editado com Sucesso", Notifica.Sucesso); - break; - case HttpStatusCode.BadRequest: - Notificar("Alerta! A data de início deve ser maior que a data de hoje", Notifica.Alerta); - break; - case HttpStatusCode.PreconditionFailed: - Notificar("Alerta! A data de início deve ser menor que a data fim ", Notifica.Alerta); - break; - default: - Notificar("Erro! Desculpe, ocorreu um erro durante o Cadastro do evento.", Notifica.Erro); - break; - } + _evento.Edit(evento); return RedirectToAction(nameof(Index)); } - eventoModel.ListaPessoa = new SelectList(_pessoaService.GetAll(), "Id", "Nome"); + eventoModel.ListaPessoa = new SelectList(_pessoa.GetAll(), "Id", "Nome"); return RedirectToAction("Edit", eventoModel); } @@ -265,29 +200,104 @@ public async Task NotificarEventoViaEmail(int id) } return RedirectToAction(nameof(Index)); } + [Authorize(Roles = "ADMINISTRADOR GRUPO,COLABORADOR,REGENTE")] + // GET: EventoController/RegistrarFrequencia/5 + public async Task RegistrarFrequencia(int idEvento) + { + int idGrupoMusical = await _grupoMusical.GetIdGrupo(User.Identity.Name); + + var listaPessoasAutoComplete = await _pessoa.GetRegentesForAutoCompleteAsync(idGrupoMusical); + if (listaPessoasAutoComplete == null || !listaPessoasAutoComplete.Any()) + { + Notificar("É necessário cadastrar pelo menos um Regente para então registrar uma frequência.", Notifica.Informativo); + return RedirectToAction(nameof(Index)); + } + + var listaFigurinos = await _figurino.GetAllFigurinoDropdown(idGrupoMusical); + if (listaFigurinos == null || !listaFigurinos.Any()) + { + Notificar("É necessário cadastrar pelo menos um Figurino para então registrar uma frequência.", Notifica.Informativo); + return RedirectToAction(nameof(Index)); + } + + var evento = _evento.Get(idEvento); + if (evento == null) + { + Notificar("Evento não encontrado.", Notifica.Erro); + return RedirectToAction(nameof(Index)); + } + + EventoViewModel eventoView = _mapper.Map(evento); + if (eventoView == null) + { + Notificar("Erro ao mapear o evento.", Notifica.Erro); + return RedirectToAction(nameof(Index)); + } + + FrequenciaEventoViewModel frequenciaEvento = new() + { + IdGrupoMusical = idGrupoMusical, + DataHoraInicio = eventoView.DataHoraInicio, + DataHoraFim = eventoView.DataHoraFim, + ListaPessoa = new SelectList(listaPessoasAutoComplete, "Id", "Nome"), + ListaFigurino = new SelectList(listaFigurinos, "Id", "Nome"), + Local = eventoView.Local + }; + + ViewData["exemploRegente"] = listaPessoasAutoComplete.Select(p => p.Nome).FirstOrDefault()?.Split(" ")[0]; + frequenciaEvento.JsonLista = listaPessoasAutoComplete.ToJson(); + + return View(frequenciaEvento); + } + + [Authorize(Roles = "ADMINISTRADOR GRUPO,COLABORADOR,REGENTE")] + [HttpPost] + [ValidateAntiForgeryToken] + public async Task RegistrarFrequencia(List listaFrequencia) + { + switch (await _evento.RegistrarFrequenciaAsync(listaFrequencia)) + { + case HttpStatusCode.OK: + Notificar("Lista de Frequência salva com Sucesso", Notifica.Sucesso); + break; + case HttpStatusCode.BadRequest: + Notificar("A Lista enviada Não possui registros", Notifica.Alerta); + return RedirectToAction(nameof(Index)); + case HttpStatusCode.Conflict: + Notificar("A Lista enviada é Inválida", Notifica.Erro); + break; + case HttpStatusCode.NotFound: + Notificar("A Lista enviada não foi Encontrada", Notifica.Erro); + break; + case HttpStatusCode.InternalServerError: + Notificar("Desculpe, ocorreu um Erro ao registrar a Lista de Frequência.", Notifica.Erro); + break; + } + return RedirectToAction(nameof(RegistrarFrequencia), new { idEnsaio = listaFrequencia.First().IdEvento }); + } + // GET: EventoController/Edit/5 public async Task GerenciarInstrumentoEvento(int id) - { + { int idGrupoMusical = await _grupoMusical.GetIdGrupo(User.Identity.Name); - var listaPessoasAutoComplete = await _pessoaService.GetRegentesForAutoCompleteAsync(idGrupoMusical); + var listaPessoasAutoComplete = await _pessoa.GetRegentesForAutoCompleteAsync(idGrupoMusical); if (listaPessoasAutoComplete == null || !listaPessoasAutoComplete.Any()) { Notificar("É necessário cadastrar pelo menos um Regente para então cadastrar um Evento Musical.", Notifica.Informativo); return RedirectToAction(nameof(Index)); - } + } - var figurinosDropdown = await _figurino.GetAllFigurinoDropdown(idGrupoMusical); + var figurinosDropdown = await _figurino.GetAllFigurinoDropdown(idGrupoMusical); if (figurinosDropdown == null || !figurinosDropdown.Any()) { - Notificar("É necessário cadastrar um Figurino para então cadastrar um Evento Musical.", Notifica.Informativo); return RedirectToAction(nameof(Index)); } - var evento = _evento.Get(id); + var evento = _evento.Get(idGrupoMusical); EventoViewModel eventoView = _mapper.Map(evento); InstrumentoMusicalViewModel instrumentoMusicalViewModel = new InstrumentoMusicalViewModel(); @@ -296,36 +306,20 @@ public async Task GerenciarInstrumentoEvento(int id) GerenciarInstrumentoEventoViewModel gerenciarInstrumentoEvento = new GerenciarInstrumentoEventoViewModel { - IdGrupoMusical = idGrupoMusical, + IdGrupoMusical = idGrupoMusical, DataHoraInicio = eventoView.DataHoraInicio, DataHoraFim = eventoView.DataHoraFim, ListaPessoa = new SelectList(listaPessoasAutoComplete, "Id", "Nome"), FigurinoList = new SelectList(figurinosDropdown, "Id", "Nome"), Local = eventoView.Local, - ListaInstrumentos = instrumentoMusicalViewModel.ListaInstrumentos, - }; + ListaInstrumentos = instrumentoMusicalViewModel.ListaInstrumentos, + }; ViewData["exemploRegente"] = listaPessoasAutoComplete.Select(p => p.Nome).FirstOrDefault()?.Split(" ")[0]; gerenciarInstrumentoEvento.JsonLista = listaPessoasAutoComplete.ToJson(); return View(gerenciarInstrumentoEvento); - } - - [Authorize(Roles = "ADMINISTRADOR GRUPO, COLABORADOR")] - [HttpPost] - [ValidateAntiForgeryToken] - public async Task GerenciarInstrumentoEvento(GerenciarInstrumentoEventoViewModel gerenciarInstrumentoEventoViewModel) - { - - Apresentacaotipoinstrumento apresentacaotipoinstrumento = new Apresentacaotipoinstrumento - { - IdApresentacao = gerenciarInstrumentoEventoViewModel.IdApresentacao, - IdTipoInstrumento = gerenciarInstrumentoEventoViewModel.IdTipoInstrumento, - QuantidadePlanejada = gerenciarInstrumentoEventoViewModel.Quantidade - }; - - HttpStatusCode resul = await _evento.CreateApresentacaoInstrumento(apresentacaotipoinstrumento); + } - return RedirectToAction(nameof(GerenciarInstrumentoEvento), new { id = apresentacaotipoinstrumento.IdApresentacao }); - } + } } From 74eb5da21836ee3adf5ee31008326a60ea6513f4 Mon Sep 17 00:00:00 2001 From: Alesandro <105898363+Alesandr0@users.noreply.github.com> Date: Mon, 12 Aug 2024 19:07:11 -0300 Subject: [PATCH 2/5] Update EventoService.cs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Implementação RegistrarFrequenciaAsync --- Codigo/Service/EventoService.cs | 49 ++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/Codigo/Service/EventoService.cs b/Codigo/Service/EventoService.cs index 47d9bd5b..4135b119 100644 --- a/Codigo/Service/EventoService.cs +++ b/Codigo/Service/EventoService.cs @@ -1,4 +1,4 @@ -using Core; +using Core; using Core.Datatables; using Core.DTO; using Core.Service; @@ -419,5 +419,52 @@ public async Task CreateApresentacaoInstrumento(Apresentacaotipo return HttpStatusCode.InternalServerError; //se tudo der errado } } + public async Task RegistrarFrequenciaAsync(List frequencias) + { + try + { + if (!frequencias.Any()) + { + return HttpStatusCode.BadRequest; + } + int idEvento = frequencias.First().IdEvento; + + var dbFrequencias = _context.Eventopessoas + .Where(ep => ep.IdEvento == frequencias.First().IdEvento) + .OrderBy(ep => ep.IdPessoaNavigation.Nome); + + if (dbFrequencias == null) + { + return HttpStatusCode.NotFound; + } + + if (dbFrequencias.Count() != frequencias.Count) + { + return HttpStatusCode.Conflict; + } + + int pos = 0; + await dbFrequencias.ForEachAsync(dbFrequencia => + { + if (dbFrequencia.IdEvento == frequencias[0].IdEvento && dbFrequencia.IdPessoa == frequencias[pos].IdPessoa) + { + dbFrequencia.JustificativaAceita = Convert.ToSByte(frequencias[pos].JustificativaAceita); + dbFrequencia.Presente = Convert.ToSByte(frequencias[pos].Presente); + + _context.Update(dbFrequencia); + } + pos++; + }); + + await _context.SaveChangesAsync(); + + return HttpStatusCode.OK; + } + catch + { + return HttpStatusCode.InternalServerError; + } + } } + } From ff1c329f830b3b1b135e8e34e2a0b9a93b44f473 Mon Sep 17 00:00:00 2001 From: Alesandro <105898363+Alesandr0@users.noreply.github.com> Date: Mon, 12 Aug 2024 19:10:11 -0300 Subject: [PATCH 3/5] Update EventoViewModel.cs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Implementação da class FrequenciaEventoViewModel --- .../Models/EventoViewModel.cs | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/Codigo/GestaoGrupoMusicalWeb/Models/EventoViewModel.cs b/Codigo/GestaoGrupoMusicalWeb/Models/EventoViewModel.cs index 0c485d29..6b260b9c 100644 --- a/Codigo/GestaoGrupoMusicalWeb/Models/EventoViewModel.cs +++ b/Codigo/GestaoGrupoMusicalWeb/Models/EventoViewModel.cs @@ -1,4 +1,4 @@ -using Core; +using Core; using Core.DTO; using Microsoft.AspNetCore.Mvc.Rendering; using System.ComponentModel.DataAnnotations; @@ -114,4 +114,40 @@ public class GerenciarInstrumentoEventoViewModel public IEnumerable? GerenciarInstrumentos { get; set; } } + public class FrequenciaEventoViewModel + { + public int Id { get; set; } + public int IdGrupoMusical { get; set; } + + [Display(Name = "Início")] + [Required(ErrorMessage = "O campo {0} é obrigatório")] + public DateTime? DataHoraInicio { get; set; } + + [Display(Name = "Final")] + [Required(ErrorMessage = "O campo {0} é obrigatório")] + public DateTime? DataHoraFim { get; set; } + + [Display(Name = "Tipo")] + [Required(ErrorMessage = "O campo {0} é obrigatório")] + public Tipo Tipo { get; set; } + + [Display(Name = "Regentes")] + [Required(ErrorMessage = "O campo {0} é obrigatório")] + public IEnumerable? IdRegentes { get; set; } + + public SelectList? ListaPessoa { get; set; } + + [Display(Name = "Figurino")] + [Required(ErrorMessage = "O campo {0} é obrigatório")] + public int IdFigurinoSelecionado { get; set; } + + public SelectList? ListaFigurino { get; set; } + + [Display(Name = "Local")] + [MaxLength(100, ErrorMessage = "O campo {0} deve ter no máximo 100 caracteres")] + public string? Local { get; set; } + + public string? JsonLista { get; set; } + } + } From 9250df222bb09d3c0c8bcb45037ca0e5a346f05b Mon Sep 17 00:00:00 2001 From: Alesandro <105898363+Alesandr0@users.noreply.github.com> Date: Mon, 12 Aug 2024 19:12:48 -0300 Subject: [PATCH 4/5] Update EventoController.cs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Implementação do método Registrar frequência --- .../Controllers/EventoController.cs | 249 ++++++++++++------ 1 file changed, 166 insertions(+), 83 deletions(-) diff --git a/Codigo/GestaoGrupoMusicalWeb/Controllers/EventoController.cs b/Codigo/GestaoGrupoMusicalWeb/Controllers/EventoController.cs index be21558f..962ce0a5 100644 --- a/Codigo/GestaoGrupoMusicalWeb/Controllers/EventoController.cs +++ b/Codigo/GestaoGrupoMusicalWeb/Controllers/EventoController.cs @@ -10,29 +10,30 @@ using Microsoft.AspNetCore.Authorization; using Service; using Core.DTO; +using System.Security.Claims; namespace GestaoGrupoMusicalWeb.Controllers { public class EventoController : BaseController { - private readonly IEventoService _evento; + private readonly IEventoService _eventoService; private readonly IMapper _mapper; - private readonly IGrupoMusicalService _grupoMusical; - private readonly IPessoaService _pessoa; - private readonly IFigurinoService _figurino; - private readonly IInstrumentoMusicalService _tipoIntrumentoMusical; + private readonly IGrupoMusicalService _grupoMusicalService; + private readonly IPessoaService _pessoaService; + private readonly IFigurinoService _figurinoService; + private readonly IInstrumentoMusicalService _tipoIntrumentoMusicalService; - public EventoController(IEventoService evento, IMapper mapper, IGrupoMusicalService grupoMusical, IPessoaService pessoa, IFigurinoService figurino, IInstrumentoMusicalService tipoInstrumentoMusical) + public EventoController(IEventoService evento, IMapper mapper, IGrupoMusicalService grupoMusical, IPessoaService pessoaService, IFigurinoService figurino, IInstrumentoMusicalService tipoInstrumentoMusical) { - _evento = evento; + _eventoService = evento; _mapper = mapper; - _grupoMusical = grupoMusical; - _pessoa = pessoa; - _figurino = figurino; - _tipoIntrumentoMusical = tipoInstrumentoMusical; + _grupoMusicalService = grupoMusical; + _pessoaService = pessoaService; + _figurinoService = figurino; + _tipoIntrumentoMusicalService = tipoInstrumentoMusical; } // GET: EventoController @@ -43,14 +44,14 @@ public ActionResult Index() public async Task GetDataPage(DatatableRequest request) { - var response = _evento.GetDataPage(request, await _grupoMusical.GetIdGrupo(User.Identity.Name)); + var response = _eventoService.GetDataPage(request, await _grupoMusicalService.GetIdGrupo(User.Identity.Name)); return Json(response); } // GET: EventoController/Details/5 public ActionResult Details(int id) { - var evento = _evento.Get(id); + var evento = _eventoService.Get(id); var eventoModel = _mapper.Map(evento); return View(eventoModel); } @@ -59,15 +60,15 @@ public ActionResult Details(int id) public async Task Create() { - int idGrupoMusical = await _grupoMusical.GetIdGrupo(User.Identity.Name); + int idGrupoMusical = await _grupoMusicalService.GetIdGrupo(User.Identity.Name); - var listaPessoasAutoComplete = await _pessoa.GetRegentesForAutoCompleteAsync(idGrupoMusical); + var listaPessoasAutoComplete = await _pessoaService.GetRegentesForAutoCompleteAsync(idGrupoMusical); if (listaPessoasAutoComplete == null || !listaPessoasAutoComplete.Any()) { Notificar("É necessário cadastrar pelo menos um Regente para então cadastrar um Evento Musical.", Notifica.Informativo); return RedirectToAction(nameof(Index)); } - var figurinosDropdown = await _figurino.GetAllFigurinoDropdown(idGrupoMusical); + var figurinosDropdown = await _figurinoService.GetAllFigurinoDropdown(idGrupoMusical); if (figurinosDropdown == null || !figurinosDropdown.Any()) { @@ -90,19 +91,19 @@ public async Task Create() [ValidateAntiForgeryToken] public async Task Create(EventoCreateViewlModel eventoModel) { - + if (ModelState.IsValid && eventoModel.IdRegentes != null) { - int idGrupoMusical = await _grupoMusical.GetIdGrupo(User.Identity.Name); + int idGrupoMusical = await _grupoMusicalService.GetIdGrupo(User.Identity.Name); eventoModel.IdGrupoMusical = idGrupoMusical; - - int auxIdPessoa = (await _pessoa.GetByCpf(User.Identity.Name))?.Id ?? 0; + + int auxIdPessoa = (await _pessoaService.GetByCpf(User.Identity.Name))?.Id ?? 0; if (auxIdPessoa != 0 && eventoModel.IdFigurinoSelecionado != 0) { Evento evento = _mapper.Map(eventoModel); evento.IdColaboradorResponsavel = auxIdPessoa; string mensagem = ""; - switch (await _evento.Create(evento,eventoModel.IdRegentes,eventoModel.IdFigurinoSelecionado)) + switch (await _eventoService.Create(evento, eventoModel.IdRegentes, eventoModel.IdFigurinoSelecionado)) { case HttpStatusCode.OK: Notificar("Evento Cadastrado com Sucesso", Notifica.Sucesso); @@ -131,28 +132,92 @@ public async Task Create(EventoCreateViewlModel eventoModel) } // GET: EventoController/Edit/5 - public ActionResult Edit(int id) + public async Task Edit(int id) { - Console.WriteLine("ID" + id); + var evento = _eventoService.Get(id); + if (evento == null) + { + Notificar("Evento não encontrado.", Notifica.Alerta); + return RedirectToAction(nameof(Index)); + } + var listaPessoasAutoComplete = await _pessoaService.GetRegentesForAutoCompleteAsync(evento.IdGrupoMusical); + if (listaPessoasAutoComplete == null || !listaPessoasAutoComplete.Any()) + { + Notificar("É necessário cadastrar pelo menos um Regente para então cadastrar um Evento Musical.", Notifica.Informativo); + return RedirectToAction(nameof(Index)); + } + var figurinosDropdown = await _figurinoService.GetAllFigurinoDropdown(evento.IdGrupoMusical); - var evento = _evento.Get(id); - var eventoModel = _mapper.Map(evento); - eventoModel.ListaPessoa = new SelectList(_pessoa.GetAll(), "Id", "Nome"); - return View(eventoModel); + if (figurinosDropdown == null || !figurinosDropdown.Any()) + { + Notificar("É necessário cadastrar um Figurino para então cadastrar um Evento Musical.", Notifica.Informativo); + return RedirectToAction(nameof(Index)); + } + EventoCreateViewlModel eventoModelCreate = new() + { + Id = evento.Id, + IdGrupoMusical = evento.IdGrupoMusical, + DataHoraInicio = evento.DataHoraInicio, + DataHoraFim = evento.DataHoraFim, + Local = evento.Local, + Repertorio = evento.Repertorio, + ListaPessoa = new SelectList(listaPessoasAutoComplete, "Id", "Nome"), + FigurinoList = new SelectList(figurinosDropdown, "Id", "Nome") + }; + + ViewData["exemploRegente"] = listaPessoasAutoComplete.Select(p => p.Nome).FirstOrDefault()?.Split(" ")[0]; + eventoModelCreate.JsonLista = listaPessoasAutoComplete.ToJson(); + return View(eventoModelCreate); } // POST: EventoController/Edit/5 [HttpPost] [ValidateAntiForgeryToken] - public ActionResult Edit(int id, EventoViewModel eventoModel) + public async Task Edit(EventoCreateViewlModel eventoModel) { - if (ModelState.IsValid) + + if (ModelState.IsValid && eventoModel.IdFigurinoSelecionado != 0 && eventoModel.IdRegentes != null && eventoModel.IdRegentes.Any()) { + var colaborador = await _pessoaService.GetByCpf(User.Identity?.Name); + if (colaborador == null) + { + return RedirectToAction("Sair", "Identity"); + } var evento = _mapper.Map(eventoModel); - _evento.Edit(evento); + evento.IdColaboradorResponsavel = colaborador.Id; + evento.IdGrupoMusical = colaborador.IdGrupoMusical; + if (eventoModel.IdFigurinoSelecionado != 0 && eventoModel.IdRegentes != null) + { + foreach (int idPessoa in eventoModel.IdRegentes) + { + evento.Eventopessoas.Add(new Eventopessoa() + { + IdPessoa = idPessoa, + IdEvento = evento.Id, + IdPapelGrupoPapelGrupo = 5, + IdTipoInstrumento = 0 + }); + } + evento.IdFigurinos.Add(new Figurino() { Id = eventoModel.IdFigurinoSelecionado }); + } + switch (_eventoService.Edit(evento)) + { + case HttpStatusCode.OK: + Notificar("Evento Editado com Sucesso", Notifica.Sucesso); + break; + case HttpStatusCode.BadRequest: + Notificar("Alerta! A data de início deve ser maior que a data de hoje", Notifica.Alerta); + break; + case HttpStatusCode.PreconditionFailed: + Notificar("Alerta! A data de início deve ser menor que a data fim ", Notifica.Alerta); + break; + default: + Notificar("Erro! Desculpe, ocorreu um erro durante o Cadastro do evento.", Notifica.Erro); + break; + } return RedirectToAction(nameof(Index)); } - eventoModel.ListaPessoa = new SelectList(_pessoa.GetAll(), "Id", "Nome"); + eventoModel.ListaPessoa = new SelectList(_pessoaService.GetAll(), "Id", "Nome"); return RedirectToAction("Edit", eventoModel); } @@ -161,7 +226,7 @@ public ActionResult Edit(int id, EventoViewModel eventoModel) [ValidateAntiForgeryToken] public ActionResult Delete(int id) { - HttpStatusCode result = _evento.Delete(id); + HttpStatusCode result = _eventoService.Delete(id); switch (result) { case HttpStatusCode.OK: @@ -179,8 +244,8 @@ public ActionResult Delete(int id) public async Task NotificarEventoViaEmail(int id) { - var pessoas = await _grupoMusical.GetAllPeopleFromGrupoMusical(await _grupoMusical.GetIdGrupo(User.Identity.Name)); - switch (_evento.NotificarEventoViaEmail(pessoas, id)) + var pessoas = await _grupoMusicalService.GetAllPeopleFromGrupoMusical(await _grupoMusicalService.GetIdGrupo(User.Identity.Name)); + switch (_eventoService.NotificarEventoViaEmail(pessoas, id)) { case HttpStatusCode.OK: Notificar("Notificação de Evento foi Enviada com Sucesso.", Notifica.Sucesso); @@ -200,27 +265,89 @@ public async Task NotificarEventoViaEmail(int id) } return RedirectToAction(nameof(Index)); } + // GET: EventoController/Edit/5 + + public async Task GerenciarInstrumentoEvento(int id) + { + + int idGrupoMusical = await _grupoMusicalService.GetIdGrupo(User.Identity.Name); + + var listaPessoasAutoComplete = await _pessoaService.GetRegentesForAutoCompleteAsync(idGrupoMusical); + if (listaPessoasAutoComplete == null || !listaPessoasAutoComplete.Any()) + { + Notificar("É necessário cadastrar pelo menos um Regente para então cadastrar um Evento Musical.", Notifica.Informativo); + return RedirectToAction(nameof(Index)); + } + + var figurinosDropdown = await _figurinoService.GetAllFigurinoDropdown(idGrupoMusical); + + if (figurinosDropdown == null || !figurinosDropdown.Any()) + { + + Notificar("É necessário cadastrar um Figurino para então cadastrar um Evento Musical.", Notifica.Informativo); + return RedirectToAction(nameof(Index)); + } + var evento = _eventoService.Get(id); + EventoViewModel eventoView = _mapper.Map(evento); + + InstrumentoMusicalViewModel instrumentoMusicalViewModel = new InstrumentoMusicalViewModel(); + IEnumerable listaInstrumentos = await _tipoIntrumentoMusicalService.GetAllTipoInstrumento(); + instrumentoMusicalViewModel.ListaInstrumentos = new SelectList(listaInstrumentos, "Id", "Nome", null); + + GerenciarInstrumentoEventoViewModel gerenciarInstrumentoEvento = new GerenciarInstrumentoEventoViewModel + { + IdGrupoMusical = idGrupoMusical, + DataHoraInicio = eventoView.DataHoraInicio, + DataHoraFim = eventoView.DataHoraFim, + ListaPessoa = new SelectList(listaPessoasAutoComplete, "Id", "Nome"), + FigurinoList = new SelectList(figurinosDropdown, "Id", "Nome"), + Local = eventoView.Local, + ListaInstrumentos = instrumentoMusicalViewModel.ListaInstrumentos, + }; + + ViewData["exemploRegente"] = listaPessoasAutoComplete.Select(p => p.Nome).FirstOrDefault()?.Split(" ")[0]; + gerenciarInstrumentoEvento.JsonLista = listaPessoasAutoComplete.ToJson(); + return View(gerenciarInstrumentoEvento); + } + + [Authorize(Roles = "ADMINISTRADOR GRUPO, COLABORADOR")] + [HttpPost] + [ValidateAntiForgeryToken] + public async Task GerenciarInstrumentoEvento(GerenciarInstrumentoEventoViewModel gerenciarInstrumentoEventoViewModel) + { + + Apresentacaotipoinstrumento apresentacaotipoinstrumento = new Apresentacaotipoinstrumento + { + IdApresentacao = gerenciarInstrumentoEventoViewModel.IdApresentacao, + IdTipoInstrumento = gerenciarInstrumentoEventoViewModel.IdTipoInstrumento, + QuantidadePlanejada = gerenciarInstrumentoEventoViewModel.Quantidade + }; + + HttpStatusCode resul = await _eventoService.CreateApresentacaoInstrumento(apresentacaotipoinstrumento); + + return RedirectToAction(nameof(GerenciarInstrumentoEvento), new { id = apresentacaotipoinstrumento.IdApresentacao }); + } [Authorize(Roles = "ADMINISTRADOR GRUPO,COLABORADOR,REGENTE")] // GET: EventoController/RegistrarFrequencia/5 public async Task RegistrarFrequencia(int idEvento) { - int idGrupoMusical = await _grupoMusical.GetIdGrupo(User.Identity.Name); + int idGrupoMusical = await _grupoMusicalService.GetIdGrupo(User.Identity.Name); - var listaPessoasAutoComplete = await _pessoa.GetRegentesForAutoCompleteAsync(idGrupoMusical); + var listaPessoasAutoComplete = await _pessoaService.GetRegentesForAutoCompleteAsync(idGrupoMusical); if (listaPessoasAutoComplete == null || !listaPessoasAutoComplete.Any()) { Notificar("É necessário cadastrar pelo menos um Regente para então registrar uma frequência.", Notifica.Informativo); return RedirectToAction(nameof(Index)); } - var listaFigurinos = await _figurino.GetAllFigurinoDropdown(idGrupoMusical); + var listaFigurinos = await _figurinoService.GetAllFigurinoDropdown(idGrupoMusical); if (listaFigurinos == null || !listaFigurinos.Any()) { Notificar("É necessário cadastrar pelo menos um Figurino para então registrar uma frequência.", Notifica.Informativo); return RedirectToAction(nameof(Index)); } - var evento = _evento.Get(idEvento); + var evento = _eventoService.Get(idEvento); if (evento == null) { Notificar("Evento não encontrado.", Notifica.Erro); @@ -255,7 +382,7 @@ public async Task RegistrarFrequencia(int idEvento) [ValidateAntiForgeryToken] public async Task RegistrarFrequencia(List listaFrequencia) { - switch (await _evento.RegistrarFrequenciaAsync(listaFrequencia)) + switch (await _eventoService.RegistrarFrequenciaAsync(listaFrequencia)) { case HttpStatusCode.OK: Notificar("Lista de Frequência salva com Sucesso", Notifica.Sucesso); @@ -276,50 +403,6 @@ public async Task RegistrarFrequencia(List GerenciarInstrumentoEvento(int id) - { - - int idGrupoMusical = await _grupoMusical.GetIdGrupo(User.Identity.Name); - - var listaPessoasAutoComplete = await _pessoa.GetRegentesForAutoCompleteAsync(idGrupoMusical); - if (listaPessoasAutoComplete == null || !listaPessoasAutoComplete.Any()) - { - Notificar("É necessário cadastrar pelo menos um Regente para então cadastrar um Evento Musical.", Notifica.Informativo); - return RedirectToAction(nameof(Index)); - } - - var figurinosDropdown = await _figurino.GetAllFigurinoDropdown(idGrupoMusical); - - if (figurinosDropdown == null || !figurinosDropdown.Any()) - { - Notificar("É necessário cadastrar um Figurino para então cadastrar um Evento Musical.", Notifica.Informativo); - return RedirectToAction(nameof(Index)); - } - var evento = _evento.Get(idGrupoMusical); - EventoViewModel eventoView = _mapper.Map(evento); - - InstrumentoMusicalViewModel instrumentoMusicalViewModel = new InstrumentoMusicalViewModel(); - IEnumerable listaInstrumentos = await _tipoIntrumentoMusical.GetAllTipoInstrumento(); - instrumentoMusicalViewModel.ListaInstrumentos = new SelectList(listaInstrumentos, "Id", "Nome", null); - - GerenciarInstrumentoEventoViewModel gerenciarInstrumentoEvento = new GerenciarInstrumentoEventoViewModel - { - IdGrupoMusical = idGrupoMusical, - DataHoraInicio = eventoView.DataHoraInicio, - DataHoraFim = eventoView.DataHoraFim, - ListaPessoa = new SelectList(listaPessoasAutoComplete, "Id", "Nome"), - FigurinoList = new SelectList(figurinosDropdown, "Id", "Nome"), - Local = eventoView.Local, - ListaInstrumentos = instrumentoMusicalViewModel.ListaInstrumentos, - }; - - ViewData["exemploRegente"] = listaPessoasAutoComplete.Select(p => p.Nome).FirstOrDefault()?.Split(" ")[0]; - gerenciarInstrumentoEvento.JsonLista = listaPessoasAutoComplete.ToJson(); - return View(gerenciarInstrumentoEvento); - } - } } From 2f459befb76e3b187008e4dc283612bdb42e5ccc Mon Sep 17 00:00:00 2001 From: Alesandro <105898363+Alesandr0@users.noreply.github.com> Date: Mon, 12 Aug 2024 19:16:38 -0300 Subject: [PATCH 5/5] Update IEventoService.cs --- Codigo/Core/Service/IEventoService.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Codigo/Core/Service/IEventoService.cs b/Codigo/Core/Service/IEventoService.cs index 1519a762..af6c520b 100644 --- a/Codigo/Core/Service/IEventoService.cs +++ b/Codigo/Core/Service/IEventoService.cs @@ -21,5 +21,7 @@ public interface IEventoService Task GetNomeInstrumento(int id); Task> GetAllFigurinoDropdown(int idGrupo); Task> GetPessoas(int idGrupo); + Task CreateApresentacaoInstrumento(Apresentacaotipoinstrumento apresentacaotipoinstrumento); + } }