protected async Task Salvar(EditContext editContext) { if (!editContext.Validate()) { return; } var usuarioExiste = await UsuariosServico.GetPorEmailAsync(_usuarioViewModel.Email); if (_usuarioViewModel.Id == Guid.Empty && usuarioExiste != null) { ToastService.ShowInfo("Já existe um usuário cadastrado com este email!"); return; } if (_senhaEdicao != _usuarioViewModel.Senha) { _usuarioViewModel.Senha = Encryption64.Encrypt(_usuarioViewModel.Senha); } switch (_usuarioViewModel.CargoId) { case CargosConst.Administrador: var administrador = Mapper.Map <AdministradorDTO>(_usuarioViewModel); await PostOrPutAsync(AdministradoresServico, administrador); break; case CargosConst.Recepcionista: var recepcionista = Mapper.Map <RecepcionistaDTO>(_usuarioViewModel); await PostOrPutAsync(RecepcionistasServico, recepcionista); break; case CargosConst.Laboratorio: var laboratorio = Mapper.Map <LaboratorioDTO>(_usuarioViewModel); await PostOrPutAsync(LaboratoriosServico, laboratorio); break; case CargosConst.Medico: var medicoExiste = await MedicosServico.GetPorCRMAsync(_usuarioViewModel.CRM); if (_usuarioViewModel.Id == Guid.Empty && medicoExiste != null) { ToastService.ShowInfo($"O médico {medicoExiste.Nome} já está cadastrado com o CRM {_usuarioViewModel.CRM}!"); return; } if (!_usuarioViewModel.Especialidades.Any()) { ToastService.ShowInfo("Deve ser selecionado ao menos uma especialidade!"); return; } var horariosSelecionados = _usuarioViewModel.HorariosDeTrabalho.Where(_ => _.Selecionado); if (!horariosSelecionados.Any()) { ToastService.ShowInfo("Deve ser selecionado ao menos um horário de trabalho!"); return; } var medico = Mapper.Map <MedicoDTO>(_usuarioViewModel); await PostOrPutAsync(MedicosServico, medico); break; default: ToastService.ShowWarning("O cargo informado é inválido"); break; } }