public string updateUnifyCustomer(RequestCustomer request) { request.UserName = User.Identity.Name; request.URL = this.Url.Link("Default", new { Controller = "Account", Action = "Login" }); IRepositoryCustomer customer = new Customer(); ResultJson jsonResult = new ResultJson(); // Primero Hace la Unificación y si es Correcto hace la Actualización de Socia using (DbContextJulio db = new DbContextJulio()) { var aspnetusers_id = db.AspNetUsers.Where(s => s.UserName == User.Identity.Name).FirstOrDefault().Id; dynamic _participante = null; if (!string.IsNullOrEmpty(request.Correo)) { _participante = (from p in db.participante join t in db.transaccion on p.id equals t.participante_id where p.correo_electronico == request.Correo.Trim() && p.status_participante_id != 13 && p.status_participante_id != 14 && t.tipo_transaccion_id == 1 && p.id != request.Id select new { id = p.id, clave = p.clave, fecha = t.fecha } ).OrderByDescending(t => t.fecha).FirstOrDefault(); } if (_participante == null) { if (!string.IsNullOrEmpty(request.Tel_celular) && request.Tel_celular.Trim() != "0") { _participante = (from p in db.participante join pt in db.participante_telefono on p.id equals pt.participante_id join t in db.transaccion on p.id equals t.participante_id where pt.telefono == request.Tel_celular.Trim() && pt.tipo_telefono_id == 3 && p.status_participante_id != 13 && p.status_participante_id != 14 && t.tipo_transaccion_id == 1 && p.id != request.Id select new { id = p.id, clave = p.clave, fecha = t.fecha }).OrderByDescending(t => t.fecha).FirstOrDefault(); } } // Conserva el status del participante actual, en caso de haber un error decimal status_participante_id = customer.ObtieneStatusPartipanteId(request); // Actualiza status participante como activo customer.ActualizaStatusParticipante(request, 2); Dictionary <string, object> parameters = new Dictionary <string, object>(); parameters.Add("@transferencia", "UNIFICACION"); parameters.Add("@NoTarjeta", _participante.clave); parameters.Add("@NuevaTarjeta", request.Num_tarjeta); parameters.Add("@participante_id", _participante.id); parameters.Add("@aspnetusers_id", aspnetusers_id); DataSet setTables = db.GetDataSet("[dbo].[usp_transfiere_tarjeta]", CommandType.StoredProcedure, parameters); if (setTables.Tables[0].Rows[0]["errorId"].ToString() == "0") { // Actualiza status participante como estaba. Esto para que permita pasar el proceso de actualizar socia customer.ActualizaStatusParticipante(request, status_participante_id); jsonResult = customer.UpdateCustomer(request); jsonResult.jsonObject = JsonConvert.SerializeObject(setTables.Tables[0]); } else // Ocurrio un error se regresa como estaba el status del participante { // Actualiza status participante como estaba customer.ActualizaStatusParticipante(request, status_participante_id); jsonResult.jsonObject = JsonConvert.SerializeObject(setTables.Tables[0]); } } return(JsonConvert.SerializeObject(jsonResult)); }