/// <summary> /// Serviço para a criação dos profissionais de saude /// </summary> /// <param name="profissionais_saude">Identificador para a criação na base de dados</param> /// <param name="ct">Cancellation Token - chamada asincrona</param> /// <returns>View do doente criado</returns> public async Task <Profissionais_Saude> CreateAsync(ProfissionalSaudeRequest profissionais_saude, CancellationToken ct) { try { var perfis = await _perfil_utilizadoresServices.GetAllAsync(ct); var utilizador = await _utilizadoresServices.CreateAsync(new Utilizadores() { Id_Perfil_Utilizador = perfis.ToList().Where(x => x.Nome == profissionais_saude.Profissao).Select(x => x.Id).SingleOrDefault(), Nome = profissionais_saude.Nome, Idade = profissionais_saude.Idade, Morada = profissionais_saude.Morada, NIB = profissionais_saude.NIB, CC = profissionais_saude.CC, Sexo = profissionais_saude.Sexo, Username = profissionais_saude.CC.ToString() }, ct); var result = await _profissionais_saudeRepository.CreateAsync(new Profissionais_Saude() { Id_Utilizador = utilizador.Id, Id_Hospital = profissionais_saude.Id_Hospital, Profissao = profissionais_saude.Profissao }, ct); return(result); } catch (Exception e) { throw new Exception("Ocorreu um erro na criação do profissional de saude. Verifique se os perfis de utilizador para a profissão associada ao profissional de saude estão configurados", e); } }
/// <summary> /// Serviço para a atualização dos dados de um profssional de saude /// </summary> /// <param name="id">Identificador do profissional de saude</param> /// <param name="profissionais_saude">Dados do profissional de saude para gravar</param> /// <param name="ct">Cancellation Token - chamada asincrona</param> /// <returns>View do profissional de saude</returns> public async Task <Profissionais_Saude> UpdateAsync(int id, ProfissionalSaudeRequest profissionais_saude, CancellationToken ct) { try { var profissionalObject = await _profissionais_saudeRepository.GetAsync(id, ct); var utilizador = await _utilizadoresServices.GetByIdAsync(profissionalObject.Id_Utilizador, ct); utilizador.Nome = profissionais_saude.Nome; utilizador.Idade = profissionais_saude.Idade; utilizador.Morada = profissionais_saude.Morada; utilizador.NIB = profissionais_saude.NIB; utilizador.CC = profissionais_saude.CC; utilizador.Sexo = profissionais_saude.Sexo; utilizador.Username = profissionais_saude.CC.ToString(); profissionalObject.Id_Hospital = profissionais_saude.Id_Hospital; profissionalObject.Profissao = profissionais_saude.Profissao; var result = await _profissionais_saudeRepository.UpdateAsync(profissionalObject, ct); await _utilizadoresServices.UpdateAsync(utilizador.Id, utilizador, ct); return(result); } catch (Exception e) { throw new Exception("Ocorreu um erro na actualização do doente e respectivo utilizador.", e); } }