using System; using System.Collections.Generic; using Amazon.Lambda.Core; using Amazon.Lambda.APIGatewayEvents; using Newtonsoft.Json; using MySqlConnector; using Newtonsoft.Json.Linq; using System.Data; using classes; namespace PMF { public class RegistrationUpdate: Pmfbase { MySqlDataReader _reader; public APIGatewayProxyResponse UpdateRegistration(APIGatewayProxyRequest request, ILambdaContext context) { APIGatewayProxyResponse response; Dictionary dict = new Dictionary(); string statement = ""; string cognitoUuid = ""; try { if (_con.State == ConnectionState.Closed) _con.Open(); string validationMessage = string.Empty; if (request != null && request.Body != null) { var data = JsonConvert.DeserializeObject(request.Body); var validRequest = Helper.ValidateRequestParameters(ref validationMessage, data, "strEmail", "strCognitoUuid"); if (validRequest) { var email = Helper.CleanInput(data["strEmail"].ToString()); if (!Helper.IsAValidEmail(email)) return HttpService.CreateResponse(400, payload: "The email supplied is not valid"); cognitoUuid = Helper.CleanInput(data["strCognitoUuid"].ToString()); statement = $"UPDATE user SET strCognitoUuid = '{cognitoUuid}' WHERE strEmail = '{email}'"; using var cmd = new MySqlCommand(); cmd.Connection = _con; cmd.CommandText = statement; cmd.ExecuteNonQuery(); cmd.CommandText = $"SELECT * FROM user WHERE strCognitoUuid = '{cognitoUuid}'"; cmd.ExecuteNonQuery(); _reader = cmd.ExecuteReader(); if (_reader.HasRows) { while (_reader.Read()) { dict.Add(_reader.GetName(0), _reader.GetValue(0).ToString()); //UserId dict.Add(_reader.GetName(1), _reader.GetValue(1).ToString());//cognitoID dict.Add(_reader.GetName(2), _reader.GetValue(2).ToString()); //strName dict.Add(_reader.GetName(3), _reader.GetValue(3).ToString()); //strSurname dict.Add(_reader.GetName(5), _reader.GetValue(5).ToString()); //strEmail } _reader.Close(); response = HttpService.CreateResponse(200, payload: dict); //_logger.WriteLog(cognitoUuid, statement, response.Body.ToString(), "DB"); return response; } else { response = HttpService.CreateResponse(500, payload: "An error was encountered while updating user: Check if the email is registered"); } } else { _logger.LogMessage(context, $"Processing request failed - {validationMessage}"); response = HttpService.CreateResponse(400, payload: $" {validationMessage}"); } } else { response = HttpService.CreateResponse(400, payload: "No parameters provided"); } } catch (Exception ex) { response = HttpService.CreateResponse(500, payload: ex.Message); _logger.WriteLog(cognitoUuid, statement, response.Body.ToString(), "DB"); return response; } finally { if (_reader != null) _reader.Close(); if (_con != null || _con.State == ConnectionState.Open) _con.Close(); } return response; } } }