コード例 #1
0
        private void EliminarObjetoBaseDeDatos(string nombreObjeto, BusinessVariables.EnumTipoObjeto objeto)
        {
            DataBaseModelContext db = new DataBaseModelContext();

            try
            {
                string query = "DROP ";
                switch (objeto)
                {
                case BusinessVariables.EnumTipoObjeto.Tabla:
                    query += "TABLE " + nombreObjeto;
                    break;

                case BusinessVariables.EnumTipoObjeto.Store:
                    query += "PROCEDURE " + nombreObjeto;
                    break;
                }
                db.ExecuteStoreCommand(query);
            }
            catch (Exception ex)
            {
                throw new Exception((ex.InnerException).Message);
            }
            finally
            {
                db.Dispose();
            }
        }
コード例 #2
0
        public bool ExisteMascara(Mascara mascara)
        {
            bool result             = false;
            DataBaseModelContext db = new DataBaseModelContext();

            try
            {
                var pTableName = new SqlParameter {
                    ParameterName = "@TABLENAME", Value = mascara.NombreTabla
                };
                var pResult = new SqlParameter {
                    ParameterName = "@OUTER", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.Int
                };
                db.ExecuteStoreCommand("exec ExisteTablaMascara @TABLENAME, @OUTER output", pTableName, pResult);
                result = (int)pResult.Value == 1;
                if (result)
                {
                    throw new Exception("Ya Existe");
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                db.Dispose();
            }
            return(result);
        }
コード例 #3
0
        private bool CreaTabla(string nombreCatalogo)
        {
            DataBaseModelContext db = new DataBaseModelContext();

            try
            {
                string qryCrearTablas = String.Format("CREATE TABLE {0} ( \n" +
                                                      "Id int IDENTITY(1,1) NOT NULL, \n" +
                                                      "[Descripcion] [nvarchar](MAX) NOT NULL," +
                                                      "Habilitado BIT \n" +
                                                      "CONSTRAINT [PK_{0}] PRIMARY KEY CLUSTERED \n" +
                                                      "( \n" +
                                                      "\t[Id] ASC \n" +
                                                      ")WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY] \n" +
                                                      ") ON [PRIMARY] \n " +
                                                      "ALTER TABLE [dbo].[{0}] ADD  CONSTRAINT [DF_{0}_habilitado]  DEFAULT ((1)) FOR [Habilitado]", nombreCatalogo);

                db.ExecuteStoreCommand(qryCrearTablas);
            }
            catch (Exception ex)
            {
                throw new Exception((ex.InnerException).Message);
            }
            finally
            {
                db.Dispose();
            }
            return(true);
        }
コード例 #4
0
        private bool CreaUpdate(Mascara mascara)
        {
            DataBaseModelContext db = new DataBaseModelContext();

            try
            {
                string queryParametros    = string.Empty;
                string queryCamposValues  = string.Empty;
                string queryWhereValues   = "Id = @ID";
                int    paramsCount        = mascara.NoCampos;
                int    contadorParametros = 0;
                foreach (CampoMascara campoMascara in mascara.CampoMascara)
                {
                    contadorParametros++;
                    TipoCampoMascara tmpTipoCampoMascara = db.TipoCampoMascara.SingleOrDefault(f => f.Id == campoMascara.IdTipoCampoMascara);
                    if (tmpTipoCampoMascara == null)
                    {
                        continue;
                    }
                    queryParametros   += String.Format("@{0} {1}", campoMascara.NombreCampo, tmpTipoCampoMascara.TipoDatoSql);
                    queryCamposValues += String.Format("{0} = @{0}", campoMascara.NombreCampo);

                    if (contadorParametros < paramsCount)
                    {
                        queryParametros   += ", \n";
                        queryCamposValues += ", \n";
                    }
                }

                if (mascara.Random)
                {
                    queryParametros   += String.Format(", @{0} {1}", BusinessVariables.ParametrosMascaraCaptura.NombreCampoRandom, BusinessVariables.ParametrosMascaraCaptura.TipoCampoRandom);
                    queryCamposValues += String.Format(", \n {0} = @{0}", BusinessVariables.ParametrosMascaraCaptura.NombreCampoRandom);
                }

                string queryStore = string.Format("Create  PROCEDURE {0}( \n" +
                                                  "@ID INT, \n" +
                                                  "{1}" +
                                                  ") \n" +
                                                  "AS \n" +
                                                  "BEGIN \n" +
                                                  "UPDATE {2} \n" +
                                                  "SET {3} \n" +
                                                  "WHERE {4} \n" +
                                                  "END", mascara.ComandoActualizar, queryParametros, mascara.NombreTabla, queryCamposValues, queryWhereValues);
                db.ExecuteStoreCommand(queryStore);
            }
            catch (Exception ex)
            {
                EliminarObjetoBaseDeDatos(mascara.NombreTabla, BusinessVariables.EnumTipoObjeto.Tabla);
                EliminarObjetoBaseDeDatos(mascara.ComandoInsertar, BusinessVariables.EnumTipoObjeto.Store);
                throw new Exception((ex.InnerException).Message);
            }
            finally
            {
                db.Dispose();
            }
            return(true);
        }
コード例 #5
0
        private bool CreaTabla(Mascara mascara)
        {
            DataBaseModelContext db = new DataBaseModelContext();

            try
            {
                string queryCamposTabla = string.Empty;
                foreach (CampoMascara campoMascara in mascara.CampoMascara)
                {
                    TipoCampoMascara tmpTipoCampoMascara = db.TipoCampoMascara.SingleOrDefault(f => f.Id == campoMascara.IdTipoCampoMascara);
                    if (tmpTipoCampoMascara == null)
                    {
                        continue;
                    }
                    switch (tmpTipoCampoMascara.TipoDatoSql)
                    {
                    case "NVARCHAR":
                        queryCamposTabla += String.Format("{0} {1}({2}) {3},\n", campoMascara.NombreCampo, tmpTipoCampoMascara.TipoDatoSql, campoMascara.LongitudMaxima, campoMascara.Requerido ? "NOT NULL" : "NULL");
                        break;

                    default:
                        queryCamposTabla += String.Format("{0} {1} {2},\n", campoMascara.NombreCampo, tmpTipoCampoMascara.TipoDatoSql, campoMascara.Requerido ? "NOT NULL" : "NULL");
                        break;
                    }
                }
                string qryCrearTablas = String.Format("CREATE TABLE {0} ( \n" +
                                                      "Id int IDENTITY(1,1) NOT NULL, \n" +
                                                      "IdTicket int NOT NULL," +
                                                      "{1}" +
                                                      "Habilitado BIT \n" +
                                                      (mascara.Random ? ", " + BusinessVariables.ParametrosMascaraCaptura.CampoRandom + " \n" : string.Empty) +
                                                      "CONSTRAINT [PK_{0}] PRIMARY KEY CLUSTERED \n" +
                                                      "( \n" +
                                                      "\t[Id] ASC \n" +
                                                      ")WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY] \n" +
                                                      ") ON [PRIMARY] \n" +
                                                      "ALTER TABLE [dbo].[{0}]  WITH CHECK ADD  CONSTRAINT [FK_{0}_Ticket] FOREIGN KEY([IdTicket]) \n" +
                                                      "REFERENCES [dbo].[Ticket] ([Id])\n" +
                                                      "ALTER TABLE [dbo].[{0}] CHECK CONSTRAINT [FK_{0}_Ticket]\n" +
                                                      "ALTER TABLE [dbo].[{0}] ADD  CONSTRAINT [DF_{0}_habilitado]  DEFAULT ((1)) FOR [Habilitado]", mascara.NombreTabla, queryCamposTabla);
                db.ExecuteStoreCommand(qryCrearTablas);
            }
            catch (Exception ex)
            {
                throw new Exception((ex.InnerException).Message);
            }
            finally
            {
                db.Dispose();
            }
            return(true);
        }
コード例 #6
0
        public void AgregarRegistro(int idCatalogo, string descripcion)
        {
            DataBaseModelContext db = new DataBaseModelContext();

            try
            {
                Catalogos catalogo = db.Catalogos.Single(w => w.Id == idCatalogo);
                string    store    = string.Format("{0} '{1}', '{2}'", BusinessVariables.ParametrosCatalogo.PrefijoComandoInsertar, catalogo.Tabla, descripcion.Trim().ToUpper());
                db.ExecuteStoreCommand(store);
            }
            catch (Exception ex)
            {
                throw new Exception((ex.InnerException).Message);
            }
            finally
            {
                db.Dispose();
            }
        }
コード例 #7
0
        public void HabilitarRegistroSistema(int idCatalogo, bool habilitado, int idRegistro)
        {
            DataBaseModelContext db = new DataBaseModelContext();

            try
            {
                Catalogos catalogo = db.Catalogos.Single(w => w.Id == idCatalogo);
                string    store    = string.Format("{0} '{1}', '{2}', {3}", BusinessVariables.ParametrosCatalogo.PrefijoComandoHabilitar, catalogo.Tabla, habilitado, idRegistro);
                db.ExecuteStoreCommand(store);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                db.Dispose();
            }
        }
コード例 #8
0
        public Ticket CrearTicket(int idUsuario, int idArbol, List <HelperCampoMascaraCaptura> lstCaptura, bool campoRandom)
        {
            DataBaseModelContext db = new DataBaseModelContext();
            Ticket result;

            try
            {
                Usuario     usuario  = new BusinessUsuarios().ObtenerUsuario(idUsuario);
                ArbolAcceso arbol    = new BusinessArbolAcceso().ObtenerArbolAcceso(idArbol);
                Mascara     mascara  = new BusinessMascaras().ObtenerMascaraCaptura(arbol.InventarioArbolAcceso.First().IdMascara ?? 0);
                Encuesta    encuesta = new BusinessEncuesta().ObtenerEncuestaById(arbol.InventarioArbolAcceso.First().IdEncuesta ?? 0);
                Sla         sla      = new BusinessSla().ObtenerSla(arbol.InventarioArbolAcceso.First().IdSla ?? 0);
                Ticket      ticket   = new Ticket
                {
                    IdTipoUsuario     = usuario.IdTipoUsuario,
                    IdTipoArbolAcceso = arbol.IdTipoArbolAcceso,
                    IdArbolAcceso     = arbol.Id,
                    IdImpacto         = (int)arbol.IdImpacto,
                    IdUsuario         = usuario.Id,
                    IdOrganizacion    = usuario.IdOrganizacion,
                    IdUbicacion       = usuario.IdUbicacion,
                    IdMascara         = mascara.Id,
                    IdEncuesta        = encuesta.Id,
                    //RespuestaEncuesta = new List<RespuestaEncuesta>(),
                    IdEstatusTicket     = (int)BusinessVariables.EnumeradoresKiiniNet.EnumEstatusTicket.Abierto,
                    FechaHoraAlta       = DateTime.ParseExact(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"), "yyyy-MM-dd HH:mm:ss:fff", CultureInfo.InvariantCulture),
                    IdEstatusAsignacion = (int)BusinessVariables.EnumeradoresKiiniNet.EnumEstatusAsignacion.PorAsignar,
                    Random        = campoRandom,
                    ClaveRegistro = GeneraCampoRandom()
                };
                //ENCUESTA
                //ticket.RespuestaEncuesta.AddRange(encuesta.EncuestaPregunta.Select(pregunta => new RespuestaEncuesta { IdEncuesta = encuesta.Id, IdPregunta = pregunta.Id }));
                //GrupoUsuario USUARIO
                ticket.TicketGrupoUsuario = new List <TicketGrupoUsuario>();
                foreach (GrupoUsuarioInventarioArbol grupoArbol in arbol.InventarioArbolAcceso.First().GrupoUsuarioInventarioArbol)
                {
                    TicketGrupoUsuario grupo = new TicketGrupoUsuario {
                        IdGrupoUsuario = grupoArbol.IdGrupoUsuario
                    };
                    if (grupoArbol.IdSubGrupoUsuario != null)
                    {
                        grupo.IdSubGrupoUsuario = grupoArbol.IdSubGrupoUsuario;
                    }
                    ticket.TicketGrupoUsuario.Add(grupo);
                }

                //SLA
                ticket.SlaEstimadoTicket = new SlaEstimadoTicket
                {
                    FechaInicio              = DateTime.ParseExact(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"), "yyyy-MM-dd HH:mm:ss:fff", CultureInfo.InvariantCulture),
                    Dias                     = sla.Dias,
                    Horas                    = sla.Horas,
                    Minutos                  = sla.Minutos,
                    Segundos                 = sla.Segundos,
                    FechaInicioProceso       = DateTime.ParseExact(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"), "yyyy-MM-dd HH:mm:ss:fff", CultureInfo.InvariantCulture),
                    TiempoHoraProceso        = sla.TiempoHoraProceso,
                    Terminado                = false,
                    SlaEstimadoTicketDetalle = new List <SlaEstimadoTicketDetalle>()
                };

                List <HorarioSubGrupo>    lstHorarioGrupo      = new List <HorarioSubGrupo>();
                List <DiaFestivoSubGrupo> lstDiasFestivosGrupo = new List <DiaFestivoSubGrupo>();
                foreach (SubGrupoUsuario sGpoUsuario in ticket.TicketGrupoUsuario.SelectMany(tgrupoUsuario => db.GrupoUsuario.Where(w => w.Id == tgrupoUsuario.IdGrupoUsuario && w.IdTipoGrupo == (int)BusinessVariables.EnumTiposGrupos.ResponsableDeAtención).SelectMany(gpoUsuario => gpoUsuario.SubGrupoUsuario)))
                {
                    lstHorarioGrupo.AddRange(db.HorarioSubGrupo.Where(w => w.IdSubGrupoUsuario == sGpoUsuario.Id).ToList());
                    lstDiasFestivosGrupo.AddRange(db.DiaFestivoSubGrupo.Where(w => w.IdSubGrupoUsuario == sGpoUsuario.Id));
                }
                DateTime fechaTermino = TiempoGeneral(lstHorarioGrupo, ticket.SlaEstimadoTicket.TiempoHoraProceso);
                ticket.FechaHoraFinProceso = fechaTermino;
                ticket.SlaEstimadoTicket.FechaFinProceso = fechaTermino;
                ticket.SlaEstimadoTicket.FechaFin        = fechaTermino;

                //SLA DETALLE
                ticket.SlaEstimadoTicket.SlaEstimadoTicketDetalle.AddRange(
                    sla.SlaDetalle.Select(
                        detalle =>
                        new SlaEstimadoTicketDetalle
                {
                    IdSubRol      = detalle.IdSubRol,
                    Dias          = sla.Dias,
                    Horas         = sla.Horas,
                    Minutos       = sla.Minutos,
                    Segundos      = sla.Segundos,
                    TiempoProceso = detalle.TiempoProceso
                }));

                ticket.IdEstatusTicket = (int)BusinessVariables.EnumeradoresKiiniNet.EnumEstatusTicket.Abierto;
                ticket.TicketEstatus   = new List <TicketEstatus>
                {
                    new TicketEstatus
                    {
                        IdEstatus           = ticket.IdEstatusTicket,
                        IdUsuarioMovimiento = idUsuario,
                        FechaMovimiento     =
                            DateTime.ParseExact(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"),
                                                "yyyy-MM-dd HH:mm:ss:fff", CultureInfo.InvariantCulture),
                    }
                };
                ticket.TicketAsignacion = new List <TicketAsignacion>
                {
                    new TicketAsignacion
                    {
                        IdEstatusAsignacion =
                            (int)BusinessVariables.EnumeradoresKiiniNet.EnumEstatusAsignacion.PorAsignar,
                        FechaAsignacion =
                            DateTime.ParseExact(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"),
                                                "yyyy-MM-dd HH:mm:ss:fff", CultureInfo.InvariantCulture),
                    }
                };

                db.Ticket.AddObject(ticket);
                db.SaveChanges();
                string store = string.Format("{0} '{1}',", mascara.ComandoInsertar, ticket.Id);
                store = lstCaptura.Aggregate(store,
                                             (current, captura) => current + string.Format("'{0}',", captura.Valor));
                store = store.Trim().TrimEnd(',');
                if (ticket.Random)
                {
                    store = store + ", '" + ticket.ClaveRegistro + "'";
                }
                db.ExecuteStoreCommand(store);
                db.ContextOptions.ProxyCreationEnabled = _proxy;
                result = new Ticket {
                    Id = ticket.Id, Random = campoRandom, ClaveRegistro = ticket.ClaveRegistro
                };
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally { db.Dispose(); }
            return(result);
        }
コード例 #9
0
        private bool CrearInsert(Mascara mascara)
        {
            DataBaseModelContext db = new DataBaseModelContext();

            try
            {
                string queryParametros    = "@IDTICKET int, ";
                string queryCampos        = "IDTICKET, ";
                string queryValues        = "@IDTICKET, ";
                int    paramsCount        = mascara.NoCampos;
                int    contadorParametros = 0;
                foreach (CampoMascara campoMascara in mascara.CampoMascara)
                {
                    contadorParametros++;
                    TipoCampoMascara tmpTipoCampoMascara =
                        db.TipoCampoMascara.SingleOrDefault(f => f.Id == campoMascara.IdTipoCampoMascara);
                    if (tmpTipoCampoMascara == null)
                    {
                        continue;
                    }
                    switch (tmpTipoCampoMascara.TipoDatoSql)
                    {
                    case "NVARCHAR":
                        queryParametros += String.Format("@{0} {1}({2})", campoMascara.NombreCampo,
                                                         tmpTipoCampoMascara.TipoDatoSql, campoMascara.LongitudMaxima);
                        break;

                    default:
                        queryParametros += String.Format("@{0} {1}", campoMascara.NombreCampo,
                                                         tmpTipoCampoMascara.TipoDatoSql);
                        break;
                    }
                    queryCampos += String.Format("{0}", campoMascara.NombreCampo);
                    queryValues += String.Format("@{0}", campoMascara.NombreCampo);
                    if (contadorParametros < paramsCount)
                    {
                        queryParametros += ", \n";
                        queryCampos     += ", \n";
                        queryValues     += ", \n";
                    }
                }

                if (mascara.Random)
                {
                    queryParametros += String.Format(", @{0} {1}", BusinessVariables.ParametrosMascaraCaptura.NombreCampoRandom, BusinessVariables.ParametrosMascaraCaptura.TipoCampoRandom);
                    queryCampos     += ", " + BusinessVariables.ParametrosMascaraCaptura.NombreCampoRandom;
                    queryValues     += String.Format(", @{0}", BusinessVariables.ParametrosMascaraCaptura.NombreCampoRandom);
                }

                string queryStore = string.Format("Create  PROCEDURE {0}( \n" +
                                                  "{1}" +
                                                  ") \n" +
                                                  "AS \n" +
                                                  "BEGIN \n" +
                                                  "INSERT INTO {2}({3}) \n" +
                                                  "VALUES({4}) \n" +
                                                  "END", mascara.ComandoInsertar, queryParametros, mascara.NombreTabla, queryCampos, queryValues);
                db.ExecuteStoreCommand(queryStore);
            }
            catch (Exception ex)
            {
                EliminarObjetoBaseDeDatos(mascara.NombreTabla, BusinessVariables.EnumTipoObjeto.Tabla);
                throw new Exception((ex.InnerException).Message);
            }
            finally
            {
                db.Dispose();
            }
            return(true);
        }
コード例 #10
0
        public void CrearCatalogoExcel(Catalogos catalogo, bool esMascara, string archivo, string hoja)
        {
            DataBaseModelContext db = new DataBaseModelContext();
            string tabla            = null;

            try
            {
                string connection = (((System.Data.EntityClient.EntityConnection)(db.Connection)).StoreConnection).ConnectionString;
                catalogo.Descripcion      = catalogo.Descripcion.Trim();
                catalogo.Tabla            = (BusinessVariables.ParametrosCatalogo.PrefijoTabla + catalogo.Descripcion).Replace(" ", string.Empty).ToUpper();
                catalogo.EsMascaraCaptura = esMascara;
                catalogo.FechaAlta        = DateTime.ParseExact(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"), "yyyy-MM-dd HH:mm:ss:fff", CultureInfo.InvariantCulture);
                catalogo.Archivo          = true;
                catalogo.Habilitado       = true;
                tabla = catalogo.Tabla;
                ExisteMascara(tabla, true);
                DataSet dtExcel = BusinessFile.ExcelManager.LeerHojaExcel(archivo, hoja);
                if (dtExcel.Tables.Count > 0)
                {
                    if (dtExcel.Tables[0].Columns.Cast <DataColumn>().Any(column => column.ColumnName.Trim().ToUpper() == "ID" || column.ColumnName.Trim().ToUpper() == "HABILITADO"))
                    {
                        throw new Exception("No se puede colocar una columna con el Nombre Id");
                    }
                    string sqltable = CreateSqlTableFromDataTable(catalogo.Tabla, dtExcel.Tables["tablaPaso"]);
                    db.ExecuteStoreCommand(sqltable);
                    SqlConnection sqlConn = new SqlConnection(connection);
                    sqlConn.Open();
                    SqlCommand cmd = new SqlCommand(string.Format("select * from {0}", catalogo.Tabla), sqlConn);

                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    da.TableMappings.Add("Table", catalogo.Tabla);
                    DataSet ds = new DataSet();
                    da.Fill(ds);
                    List <CampoCatalogo> lstCampos = (from DataColumn column in dtExcel.Tables["tablaPaso"].Columns
                                                      select new CampoCatalogo {
                        Campo = column.ColumnName, TipoCampo = SqlGetType(column)
                    }).ToList();
                    catalogo.CampoCatalogo = lstCampos;
                    foreach (DataRow row in dtExcel.Tables["tablaPaso"].Rows)
                    {
                        DataRow dr = ds.Tables[catalogo.Tabla].NewRow();
                        foreach (DataColumn column in dtExcel.Tables["tablaPaso"].Columns)
                        {
                            dr[column.ColumnName] = row[column.ColumnName].ToString();
                        }
                        dr["Habilitado"] = true;
                        ds.Tables[catalogo.Tabla].Rows.Add(dr);
                    }
                    new SqlCommandBuilder(da);
                    da.Update(ds.Tables[catalogo.Tabla]);
                    db.Catalogos.AddObject(catalogo);
                    db.SaveChanges();
                }
            }
            catch (Exception ex)
            {
                if (tabla == null)
                {
                    throw new Exception(ex.Message);
                }
                if (ExisteMascara(tabla, false))
                {
                    EliminarObjetoBaseDeDatos(tabla, BusinessVariables.EnumTipoObjeto.Tabla);
                }
                throw new Exception(ex.Message);
            }
            finally { db.Dispose(); }
        }