//-------------------------------------------------------------------------------------------------- //FUNCION QUE REGISTRA LA INFORMACION DE UN NUEVO USUARIO EN LA BASE DE DATOS //-------------------------------------------------------------------------------------------------- public async Task <ActionResult <string> > RegistroUsuario([FromBody] RequestRegistroUsuario newuser) { //SE EVALUA SI LOS SIGUIENTES CAMPOS YA SE ENCUENTRAN REGISTRADOS DENTRO DE LA TABLA PERSONAS if (!MatchCedula(newuser.NewUser.Persona.Cedula) && //TRUE: SE ENCONTRO UN REGISTRO CON LA MISMA CEDULA (ID) !MatchNumeroFicha(newuser.NewUser.Persona.NumeroFicha) && //TRUE: SE ENCONTRO UN REGISTRO CON EL MISMO NUMERO DE FICHA !MatchUsername(newuser.NewUser.Usuario.Username)) //TRUE: SE ENCONTRO UN REGISTRO CON EL MISMO NOMBRE DE USUARIO { //SE INICIA EL CICLO TRY... CATCH try { using (var transaction = this._context.Database.BeginTransaction()) { //-------------------------------------------------------------------------------------------------------- //SE CREAN LOS OBJETOS DEL TIPO "Personas" Y "Usuarios" QUE CONTENDRAN LA NUEVA INFORMACION Personas persona = Personas.NewPersonas(newuser.NewUser.Persona); Usuarios usuario = Usuarios.NewUsuarios(newuser.NewUser.Usuario); //-------------------------------------------------------------------------------------------------------- //SE REGISTRA LA INFORMACION NUEVA this._context.Add(persona); this._context.Entry(persona).State = EntityState.Added; this._context.Add(usuario); this._context.Entry(usuario).State = EntityState.Added; //-------------------------------------------------------------------------------------------------------- //SE CREA E INICIALIZA UN NUEVO OBJETO "HistorialSolicitudesWeb" Historialsolicitudesweb solicitudweb = Historialsolicitudesweb.NewHistorialSolocitudesWeb(newuser.UserId, 5); //-------------------------------------------------------------------------------------------------------- //SE AÑADE EL NUEVO REGISTRO A LA BASE DE DATOS this._context.Historialsolicitudesweb.Add(solicitudweb); //=> SE CREA LA INFORMACION DE UN NUEVO REGISTRO EN LA TABLA HistorialSolicitudesWeb. this._context.Entry(solicitudweb).State = EntityState.Added; //=> SE CAMBIA EL ESTADO DEL OBJETO CREADO COMO REFERENCIA. //-------------------------------------------------------------------------------------------------------- //SE COMPRUEBAN QUE LAS TABLAS "Personas" Y "Usuarios" TENGAN LA MISMA CANTIDAD DE REGISTROS //NOTA: ESTO DEBIDO A QUE ESTAS DOS TABLAS LLEVAN REGISTROS PARALELOS QUE SE CORRESPONDEN if (this._context.Personas.Count() != this._context.Usuarios.Count()) //=> true => LAS DOS TABLAS TIENEN CANTIDAD DE REGISTROS DISTINTOS { //SE RETORNA UNA RESPUESTA A LA SOLICITUD Y SE PROCEDE A INFORMAR AL USUARIO return(BadRequest("Error al intentar regitrar datos. Intente nuevente")); } //-------------------------------------------------------------------------------------------------------- //SE GUARDAN LOS CAMBIOS await this._context.SaveChangesAsync(); //SE CIERRA LA TRANSACCION await transaction.CommitAsync(); } } //SI OCURRE ALGUNA EXCEPCION EN EL PROCESO DE LECTURA Y ESCRITURA DE LA BASE DE DATOS EL CODIGO //SE REDIRIGE A LA SECCION CATCH DEL CICLO TRY...CATCH catch (Exception ex) when(ex is DbUpdateException || ex is DbUpdateConcurrencyException) { Console.WriteLine("\n================================================="); Console.WriteLine("================================================="); Console.WriteLine("\nHa ocurrico un error:\n" + ex.Message.ToString()); Console.WriteLine("================================================="); Console.WriteLine("=================================================\n"); //SE RETONA LA RESPUESTA "BadRequest" JUNTO CON UN MENSAJE INFORMANDO SOBRE EL ERROR return(BadRequest("\nHa ocurrico un error, intentelo nuevamente")); } } //NO SE CUMPLIO ALGUNA DE LAS TRES CONDICIONES, SE RETORNA UN MENSAJE INFORMANDO CUAL CONDICION FALLO. else { //=============================================================================================== //SI ALGUNA DE LOS CONDICIONALES EN LA EVALUACION ANTERIOR ES FALSA SE PROCEDE A INFORMAR CUAL //DE LOS CAMPOS EVALUADOS YA SE ENCUENTRA REGISTRADO //SE EVALUA SI EXISTE ALGUN REGISTRO DE USUARIO CON EL MISMO ID (CEDULA) DEL USUARIO QUE DESEA REGISTRAR if (MatchCedula(newuser.NewUser.Persona.Cedula)) { return(BadRequest("Numero de cedula ya registrado: " + newuser.NewUser.Persona.Cedula.ToString())); } //SE EVALUA SI EXISTE ALGUN REGISTRO DE USUARIO CON EL MISMO NUMERO DE FICHA DEL USUARIO QUE DESEA REGISTRAR if (MatchNumeroFicha(newuser.NewUser.Persona.NumeroFicha)) { return(BadRequest("Numero de ficha ya registrado: " + newuser.NewUser.Persona.NumeroFicha.ToString())); } //SE EVALUA SI EXISTE ALGUN REGISTRO DE USUARIO CON EL NOMBRE DE USUARIO DEL USUARIO QUE DESEA REGISTRAR if (MatchUsername(newuser.NewUser.Usuario.Username)) { return(BadRequest("Nombre de usuario" + newuser.NewUser.Usuario.Username + "ya se encuentra registrado")); } } //SI TODAS LAS CONDICIONES SE CUMPLEN SE REGISTRA EL USUARIO, SE RETORNA EL CODIGO DE ESTATUS 200 //OK Y SE INFORMA MEDIANTE UN MENSAJE QUE SE REGISTRO CON EXITO EL TABLERO. return(Ok("Registro Exitoso")); }