protected async override Task OnAfterRenderAsync(bool firstRender) { if (firstRender && Id != Guid.Empty) { _cargoIdLocalStorage = await LocalStorage.ObterUsuarioCargoIdEdicaoLocalStorageAsync(); switch (_cargoIdLocalStorage) { case CargosConst.Administrador: var administrador = await AdministradoresServico.GetAsync(Id); _usuarioViewModel = Mapper.Map <UsuarioViewModel>(administrador); break; case CargosConst.Recepcionista: var recepcionista = await RecepcionistasServico.GetAsync(Id); _usuarioViewModel = Mapper.Map <UsuarioViewModel>(recepcionista); break; case CargosConst.Laboratorio: var laboratorio = await LaboratoriosServico.GetAsync(Id); _usuarioViewModel = Mapper.Map <UsuarioViewModel>(laboratorio); break; case CargosConst.Medico: var medico = await MedicosServico.GetAsync(Id); _usuarioViewModel = Mapper.Map <UsuarioViewModel>(medico); break; } _senhaEdicao = _usuarioViewModel.Senha; StateHasChanged(); } var dotNetReference = DotNetObjectReference.Create(this); await JSRuntime.InvokeVoidAsync("select2JsInterop.startup", "#especialidades", dotNetReference, nameof(SelecionaEspecialidade)); }
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; } }