/// <summary> /// Make a bet on an open roulette /// </summary> /// <param name="apuestaRequest"></param> /// <returns></returns> public ModeloResponse <int> PlaceBet(ApuestaRequest apuestaRequest) { try { using (DataConnectionFactory <int> dapper = new ConnectionFactory <int>(AppConfiguration.Instance.MasivianBD).GetConnectionMananager()) { dapper.AddParameter("Numero", apuestaRequest.Numero); dapper.AddParameter("Color", apuestaRequest.Color); dapper.AddParameter("Dinero", apuestaRequest.Dinero); dapper.AddParameter("ID_Ruleta", apuestaRequest.IdRuleta); dapper.AddParameter("ID_Usuario", apuestaRequest.IdUsuario); var list = dapper.GetList(StoreProcedures.SP_PlaceBet); if (list != null && list.Any()) { return(ResponseManager <int> .ResponseOK(0, list)); } return(ResponseManager <int> .ResponseInternalServerError("Error al realizar apuesta")); } } catch (System.Exception ex) { Log.Error(ex, ex.Message); return(ResponseManager <int> .ResponseInternalServerError(ex.Message)); } }
/// <summary> /// Make a bet on an open roulette /// </summary> /// <param name="apuestaRequest"></param> /// <returns></returns> public ModeloResponse <string> PlaceBet(ApuestaRequest apuestaRequest) { try { var authenticationClient = managerRepository.LoginClient(apuestaRequest.AuthorizeClient); if (authenticationClient.CodigoRespuesta != System.Net.HttpStatusCode.OK) { return(ResponseManager <string> .ResponseConflict(authenticationClient.Mensaje)); } apuestaRequest.IdUsuario = authenticationClient.Data[0].Id; var responseValidateBet = ValidateBet(apuestaRequest, authenticationClient); if (responseValidateBet.CodigoRespuesta != System.Net.HttpStatusCode.OK) { return(ResponseManager <string> .ResponseConflict(responseValidateBet.Mensaje)); } var responseValidateRoulette = ValidateRoulette(apuestaRequest.IdRuleta); if (responseValidateRoulette.CodigoRespuesta != System.Net.HttpStatusCode.OK) { return(ResponseManager <string> .ResponseConflict(responseValidateRoulette.Mensaje)); } var response = managerRepository.PlaceBet(apuestaRequest); if (response.CodigoRespuesta != System.Net.HttpStatusCode.OK) { return(ResponseManager <string> .ResponseConflict(response.Mensaje)); } return(ResponseManager <string> .ResponseOK()); } catch (Exception ex) { Log.Error(ex, ex.Message); return(ResponseManager <string> .ResponseInternalServerError(ex.Message)); } }
/// <summary> /// Validate the bet restrictions /// </summary> /// <param name="apuestaRequest"></param> private ModeloResponse <string> ValidateBet(ApuestaRequest apuestaRequest, ModeloResponse <ClienteResponse> authorizeClient) { if (authorizeClient.Data[0].Dinero < apuestaRequest.Dinero) { return(ResponseManager <string> .ResponseConflict("No posee el dinero suficiente, para realizar la apuesta")); } if (apuestaRequest.Numero != null) { if (apuestaRequest.Numero < minNumber || apuestaRequest.Numero > maxNumber) { return(ResponseManager <string> .ResponseConflict($"El rango de apuesta es entre {minNumber} y {maxNumber}")); } } if (apuestaRequest.Color != "" && (apuestaRequest.Color.ToLower() != "negro" && apuestaRequest.Color.ToLower() != "rojo")) { return(ResponseManager <string> .ResponseConflict("Solo puede seleccionar rojo o negro")); } if (apuestaRequest.Dinero > maxBet) { return(ResponseManager <string> .ResponseConflict($"La apuesta no puede superar el monto maximo: {maxBet}")); } return(ResponseManager <string> .ResponseOK()); }
public IActionResult PlaceBet([FromBody] ApuestaRequest apuestaRequest) { var response = managerBusiness.PlaceBet(apuestaRequest); return(Ok(response)); }