/// <summary> /// Inscripción a una mesa de trabajo a través de la carga masiva /// Utilizando una lista con id de mesas de trabajo a las cual se inscribe /// </summary> /// <returns></returns> public bool agregarMesaParticipanteMasivo(int folio, List <int> listaIDmesa) { bool agrego = true; int idEvento = 0; RegistroEventoDAL dalReg = new RegistroEventoDAL(); MesaEventoDAL dalMesaE = new MesaEventoDAL(); try { using (var db = new SeguimientoPermanenciaEntities()) { using (DbContextTransaction transaction = db.Database.BeginTransaction()) { try { tblMesaTrabParticipante newMesaTPart = new tblMesaTrabParticipante(); foreach (var itemL in listaIDmesa) { newMesaTPart.folioParticipante = folio; newMesaTPart.idMesaTrab = itemL; db.tblMesaTrabParticipante.Add(newMesaTPart); db.SaveChanges(); //validar cantidad permitida de participantes en la mesa de trabajo foreach (var item in dalReg.getRegistroEXfolio(folio)) { idEvento = item.idEvento; } if (validarRegistroMesaT(idEvento, itemL) == false) { agrego = false; transaction.Rollback(); break; } } if (agrego == true) { transaction.Commit(); } } catch { agrego = false; transaction.Rollback(); } } } } catch (Exception) { agrego = false; } return(agrego); }
//Para registrar la mesa de trabajo del participante /// <summary> /// Nuevo registro en tblMesaTrabParticipante /// Es una transacción utilizada para el registro masivo /// Obtiene el folio y el idMesa de la lista 'listaFolioIdMT' /// Valida las cantidades aceptadas por registro a cada mesa de trabajo, en caso de no /// haber lugar para registrar a la mesa de trabajo se realiza un RollBack /// </summary> /// <param name="listaFolioIdMT"></param> /// <param name="idEvento"></param> /// <returns>true=Registro Exitoso || false=Error en el registro</returns> public bool agregarMesaParticipanteMasivo(List <string[, ]> listaFolioIdMT, int idEvento)//int folio, string listaIDmesa { bool agrego = true; //string retorno = ""; //int idEvento = 1; RegistroEventoDAL dalReg = new RegistroEventoDAL(); MesaEventoDAL dalMesaE = new MesaEventoDAL(); //MesaEventoDAL mesaEdal = new MesaEventoDAL(); //split para obtener del string listaIDmesa los id de la mesa de trabajo try { using (var db = new SeguimientoPermanenciaEntities()) { using (DbContextTransaction transaction = db.Database.BeginTransaction()) //Comienza Transacción { foreach (var listaItem in listaFolioIdMT) //Ciclo, en la lista se encuentras los folios y las mesas de trabajo en las cuales participaran { string listaIDmesa = listaItem[0, 1]; int folio = int.Parse(listaItem[0, 0]); string[] splitIdMT = listaIDmesa.Split(','); if (splitIdMT[0] != "") { try { for (int i = 0; i < splitIdMT.Length; i++) { int MT = int.Parse(splitIdMT[i]); int cantidadRegistrada = (from mtp in db.tblMesaTrabParticipante where mtp.idMesaTrab == MT select mtp).Count();//Obtiene la cantidad registrada, el dato será utilizado para validar si se pueden realizar o no más registros a la MT MesaEventoDAL mesaEdal = new MesaEventoDAL(); int cantidadAceptada = mesaEdal.cantidadAceptadaMesaT(idEvento, MT); tblMesaTrabParticipante newMesaTPart = new tblMesaTrabParticipante(); newMesaTPart.folioParticipante = folio; newMesaTPart.idMesaTrab = MT; db.tblMesaTrabParticipante.Add(newMesaTPart); db.SaveChanges(); //agrego = "CR "+cantidadRegistrada.ToString() + " CA" + cantidadAceptada.ToString()+" "+idEvento.ToString()+" "+MT.ToString(); if ((cantidadRegistrada + i + 1 <= cantidadAceptada) == false)//En caso de no aceptar mas participantes para la mesa de trabajo se realiza un RollBack { agrego = false; transaction.Rollback(); break; } } } catch { agrego = false; transaction.Rollback(); } } if (agrego == false) { break; } } if (agrego == true) { transaction.Commit(); } } } } catch (Exception) { agrego = false; } return(agrego); }