Esempio n. 1
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
        }