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;
            }
        }