Beispiel #1
0
        /// <summary>
        /// Asigna cursos a empresa
        /// </summary>
        /// <param name="empresa"></param>
        public void AsignarCursos(Empresa empresa)
        {
            // -- Recupero empresa existente
            var empresaActual = Dalc.GetByID(empresa.EntityID);
            // -- Lista de ids de los cursos seleccionados para la empresa
            List <long> idsCursosEmpresa = empresa.EmpresaCursos.Select(x => x.Curso.EntityID).ToList();
            // -- Lista de ids de cursos que tenia la empresa guardada
            List <long> idsCursosEmpresaEnActual = empresaActual.EmpresaCursos.Select(x => x.Curso.EntityID).ToList();

            // -- Borro cursos sacados
            for (int i = empresaActual.EmpresaCursos.Count - 1; i >= 0; i--)
            {
                // -- Si el curso no esta contenido
                if (!idsCursosEmpresa.Contains(empresaActual.EmpresaCursos[i].Curso.EntityID))
                {
                    // -- Quito el curso
                    empresaActual.EmpresaCursos.RemoveAt(i);
                }
            }
            // -- Agrego cursos nuevos
            foreach (EmpresaCurso empCur in empresa.EmpresaCursos)
            {
                // -- Si la empresa no tenia el curso
                if (!idsCursosEmpresaEnActual.Contains(empCur.Curso.EntityID))
                {
                    // Lo agrego
                    empresaActual.EmpresaCursos.Add(empCur);
                }
            }
            // -- Actualizo
            Dalc.Update(empresaActual);
        }
Beispiel #2
0
        /// <summary>
        /// Inserta una nueva diapositiva vista si no existe, o actualiza la fecha si existe
        /// </summary>
        /// <param name="diapositivaID"></param>
        public void AddOrUpdate(Diapositiva diapositiva)
        {
            // -- Obtengo usuario logueado
            var usuarioLogueado = SessionManager.Get <Usuario>(Global.SessionsKeys.USER_SESSION);

            DiapositivaVista dv = Dalc.GetByUsuarioAndDiapositiva(diapositiva.EntityID, usuarioLogueado.EntityID);

            //si no exista la diapositiva vista creo una nueva
            if (dv == null)
            {
                dv = new DiapositivaVista();
                DiapositivaDalc diapositivaDalc = new DiapositivaDalc();

                //asigno diapositiva y usuario
                dv.Diapositiva = diapositiva;

                dv.Usuario = usuarioLogueado;
                //actualizo la fecha vista
                dv.FechaHoraVista = DateTime.Now;

                Dalc.Add(dv);
            }
            else
            {
                //actualizo la fecha vista
                dv.FechaHoraVista = DateTime.Now;

                Dalc.Update(dv);
            }
        }
Beispiel #3
0
        public void CargarImagen(Empresa empresa, Stream fileStream, string path, string extension)
        {
            path += "logoEmpresa" + empresa.EntityID + extension;
            var length = Convert.ToInt32(fileStream.Length);

            byte[] data = null;

            using (var reader = new BinaryReader(fileStream))
            {
                data = reader.ReadBytes(length);
            }
            if (File.Exists(path))
            {
                File.Delete(path);
            }

            // -- Creo imagen
            var file = new FileStream(path, FileMode.Create, FileAccess.Write);

            file.Write(data, 0, length);

            file.Close();

            // -- Obtengo empresa
            var empresaActual = Dalc.GetByID(empresa.EntityID);

            // -- Actualizo imagen
            empresaActual.Imagen = "logoEmpresa" + empresa.EntityID + extension;
            // -- Actualizo
            Dalc.Update(empresaActual);
        }
Beispiel #4
0
 /// <summary>
 /// Delete data row
 /// </summary>
 /// <param name="r">DataRow to delete</param>
 public void Delete(DataRow r)
 {
     if (r.RowState != DataRowState.Deleted)
     {
         r.Delete();
     }
     Dalc.Update(r.Table);
 }
Beispiel #5
0
        /// <summary>
        /// Actualiza el estado de un cursousuario
        /// </summary>
        /// <param name="cursoUsuarioID">id del cursousuario</param>
        /// <param name="estadoID">id del nuevo estado</param>
        public void ActualizarEstado(long cursoUsuarioID, long estadoID)
        {
            var cursoUsuario = Dalc.GetByID(cursoUsuarioID);

            cursoUsuario.EstadoCurso = new EstadoCurso {
                EntityID = estadoID
            };
            Dalc.Update(cursoUsuario);
        }
Beispiel #6
0
        /// <summary>
        /// Agrega curso y carga imagen
        /// </summary>
        /// <param name="curso"></param>
        /// <param name="appPath"></param>
        /// <param name="fileStream"></param>
        /// <param name="extension"></param>
        public void AddCurso(Curso curso, string appPath, Stream fileStream, string extension)
        {
            // -- Seteo propiedades
            curso.Activo    = true;
            curso.FechaAlta = DateTime.Now;
            // -- Cargado false porque aun no se suben archivos
            curso.Cargado = false;

            // -- Obtengo usuario logueado
            var usuarioLogueado = SessionManager.Get <Usuario>(Global.SessionsKeys.USER_SESSION);

            //Si el usuario no es administrador del sitio o administrador guardo la empresa
            if (usuarioLogueado.Rol.EntityID != Convert.ToInt64(Global.Roles.ADMINISTRADOR) || usuarioLogueado.Rol.EntityID != Convert.ToInt64(Global.Roles.ADMINISTRADOR_SITIO))
            {
                curso.Empresa = new EmpresaLogic().GetByID(usuarioLogueado.Empresa.EntityID);
            }

            base.Add(curso);

            //Si es diferente de null implica que el curso lo creo una empresa, por lo tanto se lo asigno directamente
            if (curso.Empresa != null)
            {
                AsignarCursoEmpresa(curso.Empresa.EntityID, curso.EntityID);
            }

            #region Cargo Imagen del curso

            appPath += string.Format(ImagenCursoPath, curso.EntityID, extension);
            var length = Convert.ToInt32(fileStream.Length);

            byte[] data = null;

            using (var reader = new BinaryReader(fileStream))
            {
                data = reader.ReadBytes(length);
            }

            //-- Si existe imagen con el mismo nombre la sobreescribo
            if (File.Exists(appPath))
            {
                File.Delete(appPath);
            }

            // -- Creo imagen
            var file = new FileStream(appPath, FileMode.Create, FileAccess.Write);

            file.Write(data, 0, length);

            file.Close();

            #endregion

            // -- Asigno imagen al curso y actualizo
            curso.Imagen = string.Format(ImagenCursoPath, curso.EntityID, extension);
            Dalc.Update(curso);
        }
Beispiel #7
0
        public void Set(object fromKey, IEnumerable toKeys)
        {
            // load existing keys
            var currentToKeys = GetToKeys(fromKey);

            // remove missed relations
            var fromCondition   = ComposeFromCondition(fromKey);
            var deleteCondition = fromCondition;
            var toKeysArr       = toKeys.Cast <object>().ToArray();

            if (toKeysArr.Length > 0)
            {
                deleteCondition = new QueryConditionNode((QField)ToFieldName, Conditions.In | Conditions.Not, new QConst(toKeysArr)) & deleteCondition;
            }
            Dalc.Delete(new Query(RelationSourceName, deleteCondition));

            var data = ExtraKeys == null ? new Hashtable() : new Hashtable(new DictionaryWrapper <string, object>(ExtraKeys));

            data[FromFieldName] = fromKey;
            int pos = 1;

            foreach (var toKey in toKeys)
            {
                data[ToFieldName] = toKey;
                if (PositionFieldName != null)
                {
                    data[PositionFieldName] = pos++;
                }

                if (Contains(toKey, currentToKeys))
                {
                    if (PositionFieldName != null)
                    {
                        Dalc.Update(new Hashtable()
                        {
                            { PositionFieldName, data[PositionFieldName] }
                        },
                                    new Query(RelationSourceName, (QField)ToFieldName == new QConst(toKey) & fromCondition));
                    }
                }
                else
                {
                    Dalc.Insert(data, RelationSourceName);
                }
            }
        }
Beispiel #8
0
        /// <summary>
        /// Guarda examen realizado
        /// </summary>
        /// <param name="preguntas">preguntas</param>
        /// <param name="cursoID">id del cursp</param>
        /// <returns></returns>
        public float GuardarExamenRealizado(List <Pregunta> preguntas, long cursoID)
        {
            // -- Obtengo usuario logueado
            var usuarioLogueado = SessionManager.Get <Usuario>(Global.SessionsKeys.USER_SESSION);
            // -- Recupera curso usuario
            var cursoUsuario = Dalc.GetByUsuarioAndCurso(usuarioLogueado.EntityID, cursoID);

            // -- Recupero curso
            CursoDalc cursoDalc = new CursoDalc();
            var       curso     = cursoDalc.GetByID(cursoID);
            // -- Cantidad correctas
            int cantCorrectas = 0;

            // -- Por cada pregunta del curso
            foreach (Pregunta pregunta in curso.Preguntas)
            {
                // -- Obtengo la opcion correcta
                Opcion opcionCorrecta = pregunta.Opciones.Where(x => x.Correcta).First();
                // -- Obtengo la pregunta de las respondidas
                Pregunta preguntaActual = preguntas.Where(x => x.EntityID == pregunta.EntityID).First();
                // -- Si la opcion elegida es la correcta(es la unica opcion que se trae de las preguntas contestadas)
                if (opcionCorrecta.EntityID == preguntaActual.Opciones.First().EntityID)
                {
                    // -- Sumo una como correcta
                    cantCorrectas++;
                }
            }

            // Calculo la nota
            double nota = (float)cantCorrectas / (float)curso.Preguntas.Count * 100;

            // -- La paso a 2 decimales
            nota = Math.Round(nota, 2);
            // -- Actualizo cursousuario
            cursoUsuario.Nota        = (float)nota;
            cursoUsuario.EstadoCurso = new EstadoCurso {
                EntityID = (long)Entities.EstadoCurso.EstadosCursos.EvaluacionRealizada
            };
            Dalc.Update(cursoUsuario);

            return((float)nota);
        }
Beispiel #9
0
        /// <summary>
        /// Update data row in dats source
        /// </summary>
        /// <param name="r">DataRow to update</param>
        public void Update(DataRow r)
        {
            // this is good place to replace 'null' with DBNull
            if (r.RowState != DataRowState.Deleted)
            {
                foreach (DataColumn c in r.Table.Columns)
                {
                    if (c.AllowDBNull && r[c] == null)
                    {
                        r[c] = DBNull.Value;
                    }
                }
            }

            if (r.RowState == DataRowState.Detached)
            {
                r.Table.Rows.Add(r);
            }
            Dalc.Update(r.Table);
        }
Beispiel #10
0
        private void SaveInternal(IDictionary data, IFileObject fileObject,
                                  string tableName, string keyFieldName)
        {
            QueryConditionNode conditions = new QueryConditionNode((QField)keyFieldName,
                                                                   Conditions.Equal, (QConst)fileObject.Name);
            Hashtable recordData = new Hashtable();
            int       result     = Dalc.RecordsCount(new Query(tableName, conditions));

            if (result > 0)
            {
                if (data.Contains(keyFieldName))
                {
                    data.Remove(keyFieldName); // fixed DB bug on update
                }
                Dalc.Update(new Query(tableName, conditions), data);
            }
            else
            {
                Dalc.Insert(tableName, data);
            }
        }
Beispiel #11
0
        /// <summary>
        /// Update record in data source by primary key
        /// </summary>
        /// <param name="tableName">data source identifier</param>
        /// <param name="pk">primary key values</param>
        /// <param name="changeset">column name -> value</param>
        public void Update(string tableName, object[] pk, IDictionary <string, object> changeset)
        {
            DataSet ds = CreateDataSet(tableName);

            if (ds == null)
            {
                throw new Exception("Unknown source name");
            }
            Query q = new Query(tableName, ComposePkCondition(ds.Tables[tableName], pk));
            var   t = Dalc.Load(q, ds);

            if (t.Rows.Count == 0)
            {
                throw new Exception("Record does not exist");
            }
            foreach (DataRow r in t.Rows)
            {
                foreach (KeyValuePair <string, object> entry in changeset)
                {
                    r[entry.Key] = PrepareValue(entry.Value);
                }
            }
            Dalc.Update(t);
        }
Beispiel #12
0
 /// <summary>
 /// Update all modified rows in DataTable
 /// </summary>
 /// <param name="tbl">DataTable with changed rows</param>
 public void Update(DataTable tbl)
 {
     Dalc.Update(tbl);
 }
Beispiel #13
0
        /// <summary>
        /// Agrega curso y carga archivos
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="appPath"></param>
        /// <param name="fileStream"></param>
        public void AddCurso(Curso entity, string appPath, Stream fileStream)
        {
            // -- Seteo propiedades
            entity.Activo    = true;
            entity.FechaAlta = DateTime.Now;
            // -- Cargado false porque aun no se suben archivos
            entity.Cargado = false;

            // -- Itero hasta obtener guid no usado
            bool flag = true;

            while (flag)
            {
                // -- Obtengo el friendly guid
                entity.FilesFolder = GuidEncoder.Encode(Guid.NewGuid());
                // -- Obtengo si esta disponible
                bool disponible = Dalc.FilePathDisponible(entity.FilesFolder);
                if (disponible)
                {
                    // -- Cambio flag
                    flag = false;
                }
            }

            // -- Obtengo usuario logueado
            var usuarioLogueado = SessionManager.Get <Usuario>(Global.SessionsKeys.USER_SESSION);

            //Si el usuario no es administrador del sitio o administrador guardo la empresa
            if (usuarioLogueado.Rol.EntityID != Convert.ToInt64(Global.Roles.ADMINISTRADOR) || usuarioLogueado.Rol.EntityID != Convert.ToInt64(Global.Roles.ADMINISTRADOR_SITIO))
            {
                entity.Empresa = new EmpresaLogic().GetByID(usuarioLogueado.Empresa.EntityID);
            }

            base.Add(entity);

            //Si es diferente de null implica que el curso lo creo una empresa, por lo tanto se lo asigno directamente
            if (entity.Empresa != null)
            {
                AsignarCursoEmpresa(entity.Empresa.EntityID, entity.EntityID);
            }

            #region Creacion de carpeta y subida de archivos

            // -- Concateno
            appPath += entity.FilesFolder;

            // -- Subida de archivos
            using (ZipFile zip = ZipFile.Read(fileStream))
            {
                // -- Creo directorio
                System.IO.Directory.CreateDirectory(appPath);
                // -- Descomprimo
                zip.ExtractAll(appPath);
            }

            // -- Actualizo el estado de subida
            entity.Cargado = true;
            Dalc.Update(entity);

            #endregion
            // -- Copiar archivos en
        }