/// <summary> /// Implementación de Contrato para obtener datos de un jugador /// </summary> /// <param name="actualPlayer"></param> public void GetActualPlayer(Jugador actualPlayer) { DataObtainedResult dataObtainedResult = DataObtainedResult.ErrorObtainingData; DataAccess.Jugador searchedPlayer = jugadorDataManager.GetPlayerByNickname(actualPlayer.Apodo); if (searchedPlayer != null) { Dominio.Jugador domainSearchedPlayer = new Dominio.Jugador { IdJugador = searchedPlayer.idJugador, Apodo = searchedPlayer.apodo, CorreoElectronico = searchedPlayer.correoElectronico, Status = searchedPlayer.status, PreguntaRecuperacion = searchedPlayer.preguntaRecuperacion, IdLenguaje = searchedPlayer.idioma }; dataObtainedResult = DataObtainedResult.DataObtained; PlayerCallback.SendActualPlayer(dataObtainedResult, domainSearchedPlayer); } else { Dominio.Jugador emptyPlayer = new Jugador(); PlayerCallback.SendActualPlayer(dataObtainedResult, emptyPlayer); } }
/// <summary> /// Implementación de Contrato para verificar un jugador antes de ser otorgado acceso al sistema /// </summary> /// <param name="player"></param> public void VerifyPlayer(Dominio.Jugador player) { VerificationResult resultado = VerificationResult.NoExisteJugador; JugadorDataManager jugadorManager = new JugadorDataManager(); if (jugadorManager.CheckNickname(player.Apodo)) { if (jugadorManager.PinCorrecto(player.Apodo, player.PinConfirmacion)) { int result = jugadorManager.VerifyNewPlayer(new DataAccess.Jugador { apodo = player.Apodo, pinConfirmacion = player.PinConfirmacion, }); if (result > 0) { resultado = VerificationResult.VerificacionExistosa; } } else { resultado = VerificationResult.PinIncorrecto; } } else { resultado = VerificationResult.NoExisteJugador; } PlayerCallback.GetVerifyResult(resultado); }
/// <summary> /// Implementación de Contrato para guardar un jugador registrado a la base de datos /// </summary> /// <param name="player"></param> /// <exception> /// Este metodo puede retornar una excepcion tipo SmtpException /// </exception> public void SavePlayer(Dominio.Jugador player) { JugadorDataManager playerDataManager = new JugadorDataManager(); SaveResult saveResult; MailResult mailResult; bool nicknameExists = playerDataManager.CheckNickname(player.Apodo); if (!nicknameExists) { bool emailExists = playerDataManager.CheckEmail(player.CorreoElectronico); if (!emailExists) { System.Net.Mail.MailMessage mensaje = new System.Net.Mail.MailMessage(); mensaje.To.Add(player.CorreoElectronico); mensaje.Subject = "Account creation confirmation" + player.Apodo; mensaje.Body = "Hello " + player.Apodo + " you are one step away from verifying your account!, " + "the account verification code is as follows: " + player.PinConfirmacion; mensaje.From = new System.Net.Mail.MailAddress("*****@*****.**", "Checkers Game Proyect"); System.Net.Mail.SmtpClient cliente = new System.Net.Mail.SmtpClient { Credentials = new System.Net.NetworkCredential(mailUser, mailPassword), Port = 587, EnableSsl = true, Host = "smtp.gmail.com", }; try { mailResult = MailResult.MailSend; cliente.Send(mensaje); } catch (System.Net.Mail.SmtpException) { mailResult = MailResult.SendError; PlayerCallback.GetResendMailResult(mailResult, player.Apodo); } if (mailResult == MailResult.MailSend) { SaveNewPlayer(player); } } else { saveResult = SaveResult.CorreoExistente; PlayerCallback.GetSaveResult(saveResult, player); } } else { saveResult = SaveResult.NicknameExistente; PlayerCallback.GetSaveResult(saveResult, player); } }
/// <summary> /// Actualiza el ranking de los dos jugadores que participan en una <c>Partida</c> de un juego de checkers /// </summary> /// <param name="playerOne"></param> /// <param name="playerOneCheckers"></param> /// <param name="playerTwo"></param> /// <param name="playerTwoCheckers"></param> /// <param name="playerNumberWinner"></param> /// <exception> /// Esta excepcion puede retornar una excepcion tipo DBUpdateException /// </exception> public void UpdateMatchResults(Dominio.Jugador playerOne, int playerOneCheckers, Dominio.Jugador playerTwo, int playerTwoCheckers, int playerNumberWinner) { try { if (playerNumberWinner == 1) { var winnerRankingChange = context.Ranking.Where(ranking => playerOne.IdJugador == ranking.idDuenio).FirstOrDefault <Ranking>(); winnerRankingChange.rank += (playerOneCheckers * 10) + 10; winnerRankingChange.numeroVictorias += 1; winnerRankingChange.partidasJugadas++; var loserRankingChange = context.Ranking.Where(ranking => playerTwo.IdJugador == ranking.idDuenio).FirstOrDefault <Ranking>(); loserRankingChange.rank += CHECKER_POINT_VALUE; loserRankingChange.numeroPerdidas += 1; loserRankingChange.partidasJugadas++; context.SaveChanges(); } else { var winnerRankingChange = context.Ranking.Where(ranking => playerTwo.IdJugador == ranking.idDuenio).FirstOrDefault <Ranking>(); winnerRankingChange.rank += (playerTwoCheckers * 10) + 10; winnerRankingChange.numeroVictorias += 1; winnerRankingChange.partidasJugadas++; var loserRankingChange = context.Ranking.Where(ranking => playerOne.IdJugador == ranking.idDuenio).FirstOrDefault <Ranking>(); loserRankingChange.rank += CHECKER_POINT_VALUE; loserRankingChange.rank += CHECKER_POINT_VALUE; loserRankingChange.numeroPerdidas += 1; loserRankingChange.partidasJugadas++; context.SaveChanges(); } } catch (DbUpdateException) { throw new DbUpdateException(); } }