Exemplo n.º 1
0
        public async Task EditarAsync(SalaDto dto)
        {
            if (dto.Id == null)
            {
                AddNotification("EditarSala", MensagemValidacao.CampoInvalido);
                return;
            }

            var salaEditar = await _salaRepository.ObterAsync(dto.Id.Value);

            if (salaEditar == null)
            {
                AddNotification("EditarSala", MensagemValidacao.Sala.NaoExiste);
                return;
            }

            var identificadorDuplicado = await _salaRepository.ObterAsync(dto.IdentificadorSala);

            if (identificadorDuplicado != null && identificadorDuplicado.Id != salaEditar.Id)
            {
                AddNotification("EditarSala", MensagemValidacao.Sala.IdentificadorJaExiste);
                return;
            }

            salaEditar.Editar(dto.Tipo, dto.IdentificadorSala, dto.Observacao, Convert.ToDecimal(dto.Area.Replace('.', ',')), dto.Andar, dto.CapacidadeAlunos, dto.Ativo);

            if (dto.EquipamentoId != null && dto.EquipamentoId.Any())
            {
                var equipamentos = await _equipamentoRepository.ObterAsync(dto.EquipamentoId);

                if (!equipamentos.Any())
                {
                    AddNotification("EditarSala", MensagemValidacao.Equipamento.NaoExiste);
                    return;
                }

                if (salaEditar.SalaEquipamentos != null && salaEditar.SalaEquipamentos.Any())
                {
                    await _salaRepository.DeletarSalaEquipamentosAsync(salaEditar.SalaEquipamentos);
                }

                await _salaRepository.CriarSalaEquipamentosAsync(equipamentos.Select(e => new SalaEquipamento(salaEditar.Id, e.Id)).ToList());
            }
            else if (salaEditar.SalaEquipamentos != null && salaEditar.SalaEquipamentos.Any())
            {
                await _salaRepository.DeletarSalaEquipamentosAsync(salaEditar.SalaEquipamentos);
            }

            await _salaRepository.EditatAsync(salaEditar);
        }