public async Task <HttpResponseMessage> EditProfile(EditProfile editProfile)
        {
            try
            {
                ProfileDAL   dal      = new ProfileDAL();
                JsonResponse response = await dal.EditProfile(editProfile);

                if (response != null && response.Flag)
                {
                    return(Request.CreateResponse <JsonResponse>(HttpStatusCode.OK, response));
                }
                else
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.NotFound, Constants.ErrorNotFound));
                }
            }
            catch (DbEntityValidationException ex)
            {
                var    controllerName = ControllerContext.RouteData.Values["controller"].ToString();
                var    actionName     = ControllerContext.RouteData.Values["action"].ToString();
                Logger log            = new Logger();
                log.ErrorLog(ex, controllerName, actionName);
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, Constants.ErrorSysError));
            }
        }
示例#2
0
        /// <summary>
        /// Crea un perfil en base al modelo recibido, considerando únicamente los hijos del primer nivel.
        /// </summary>
        /// <param name="profile"></param>
        /// <returns></returns>
        public ResultBM CreateProfile(ProfileBM profile)
        {
            try
            {
                log.AddLogInfo("Creando perfil", "Creando perfil.", this);
                ProfileDAL profileDal    = new ProfileDAL();
                ResultBM   isValidResult = IsValid(profile);

                if (!isValidResult.IsValid())
                {
                    return(isValidResult);
                }

                //Se agrega el root
                PermissionDTO root = new PermissionDTO(profile.fatherCode, profile.code, profile.Description);
                profileDal.SaveProfile(root);
                CreateRelation(profile);

                log.AddLogInfo("Creando perfil", "El perfil se ha creado exitosamente.", this);
                return(new ResultBM(ResultBM.Type.OK, "Perfil creado: " + profile.Description));
            }
            catch (Exception exception)
            {
                log.AddLogCritical("Recuperando perfil", exception.Message, this);
                return(new ResultBM(ResultBM.Type.EXCEPTION, SessionHelper.GetTranslation("SAVING_ERROR") + " " + exception.Message, exception));
            }
        }
        public async Task <HttpResponseMessage> GetEditProfile(int UserID)
        {
            try
            {
                ProfileDAL  dal  = new ProfileDAL();
                EditProfile data = await dal.GetEditProfile(UserID);

                if (data != null)
                {
                    return(Request.CreateResponse <EditProfile>(HttpStatusCode.OK, data));
                }
                else
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.NotFound, Constants.ErrorNotFound));
                }
            }
            catch (DbEntityValidationException ex)
            {
                var    controllerName = ControllerContext.RouteData.Values["controller"].ToString();
                var    actionName     = ControllerContext.RouteData.Values["action"].ToString();
                Logger log            = new Logger();
                log.ErrorLog(ex, controllerName, actionName);
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, Constants.ErrorSysError));
            }
        }
示例#4
0
        private ResultBM DeleteProfile(string code)
        {
            try
            {
                ProfileDAL profileDal = new ProfileDAL();

                log.AddLogInfo("Eliminando perfil", "Eliminando perfil " + code + ".", this);

                if (profileDal.CanDeleteProfile(code))
                {
                    profileDal.DeleteProfile(code);
                    log.AddLogInfo("Eliminando perfil", "Perfil elimnado exitosamente.", this);
                    return(new ResultBM(ResultBM.Type.OK, "Perfil eliminado"));
                }
                else
                {
                    log.AddLogWarn("Borrando perfil", "No se puede eliminar el permiso " + code + " porque está asignado a al menos un usuario.", this);
                    return(new ResultBM(ResultBM.Type.FAIL, SessionHelper.GetTranslation("PERMISSION_UNDELETEABLE_ERROR")));
                }
            }
            catch (Exception exception)
            {
                log.AddLogCritical("Recuperando perfil", exception.Message, this);
                return(new ResultBM(ResultBM.Type.EXCEPTION, SessionHelper.GetTranslation("RETRIEVING_ERROR") + " " + exception.Message, exception));
            }
        }
示例#5
0
 public DataTable GetProfile()
 {
     try
     {
         ProfileDAL objDal = new ProfileDAL();
         return(objDal.ReadProfile());
     }
     catch
     {
         throw;
     }
 }
示例#6
0
 public int GetProfile(string username, string password)
 {
     try
     {
         ProfileDAL objdal = new ProfileDAL();
         return(objdal.ReadProfile(username, password));
     }
     catch (Exception)
     {
         return(-1);
         //MessageBox.Show(ex.Message());
     }
 }
示例#7
0
        /// <summary>
        /// Inserta las relaciones en la base de datos
        /// </summary>
        /// <param name="relations"></param>
        private void CreateRelation(ProfileBM root)
        {
            List <PermissionDTO> permissions = new List <PermissionDTO>();
            ProfileDAL           profileDal  = new ProfileDAL();
            List <ProfileBM>     toAnalyse   = null;
            List <PermissionDTO> toExclude   = new List <PermissionDTO>();

            List <ProfileBM> relations = root.GetChildren();

            log.AddLogDebug("Creando relaciones", "Creando relaciones para el perfil " + root.Description + ".", this);

            //Cada elemento de primer nivel, representan los roots de las distintas jerarquías de los permisos
            //La relación con los hijos es por exclusion, es decir, se mostrarán todos a menos que se encuentren en la tabla de exclusiones
            foreach (ProfileBM permission in relations)
            {
                //Creo la relación con el padre inmediato
                permissions.Add(new PermissionDTO(permission.fatherCode, permission.code, permission.Description));
            }

            log.AddLogDebug("Creando relaciones", "Agregando relaciones Perfil - Permisos.", this);
            profileDal.SaveProfileRelation(permissions);

            foreach (ProfileBM permission in relations)
            {
                toAnalyse = permission.GetAlldescendants();
                //Agrego al padre en la lista que debe ser analizada para la exclusión
                toAnalyse.Add(permission);

                foreach (ProfileBM item in toAnalyse)
                {
                    if (item.excluded)
                    {
                        toExclude.Add(new PermissionDTO(item.fatherCode, item.code, item.Description));
                    }
                }
                if (toExclude.Count > 0)
                {
                    log.AddLogDebug("Creando relaciones", "Agregando relaciones Perfil - Exclusiones.", this);
                    profileDal.SaveProfileExclusionRelation(root.Code, toExclude);
                }
            }
        }
示例#8
0
        /// <summary>
        /// Recupera los perfiles creados por el usuario.
        /// </summary>
        /// <returns></returns>
        public ResultBM GetProfiles()
        {
            try {
                ProfileDAL           profileDal     = new ProfileDAL();
                List <PermissionDTO> permissionsDto = profileDal.GetProfiles();
                List <PermissionMDL> permissionBms  = new List <PermissionMDL>();

                log.AddLogInfo("Recuperando perfil", "Recuperando perfiles creados por usuarios.", this);
                foreach (PermissionDTO permission in permissionsDto)
                {
                    permissionBms.Add(new PermissionMDL(permission.fatherCode, permission.code, permission.description, permission.excluded));
                }

                log.AddLogInfo("Recuperando perfil", "Recuperando perfiles creados por usuarios recuperados.", this);
                return(new ResultBM(ResultBM.Type.OK, "Lista de perfiles recuperada exitosamente", permissionBms));
            }
            catch (Exception exception)
            {
                log.AddLogCritical("Recuperando perfil", exception.Message, this);
                return(new ResultBM(ResultBM.Type.EXCEPTION, SessionHelper.GetTranslation("RETRIEVING_ERROR") + " " + exception.Message, exception));
            }
        }
示例#9
0
        public ResultBM UpdateProfile(ProfileBM profile)
        {
            try
            {
                log.AddLogInfo("Actualizando perfil", "Creando perfil.", this);
                ProfileDAL profileDal    = new ProfileDAL();
                ResultBM   isValidResult = IsValid(profile);

                if (!isValidResult.IsValid())
                {
                    return(isValidResult);
                }
                profileDal.DeleteRelation(profile.code);
                CreateRelation(profile);

                log.AddLogInfo("Actualizando perfil", "El perfil se ha actualizado exitosamente.", this);
                return(new ResultBM(ResultBM.Type.OK, "Perfil actualizado."));
            }
            catch (Exception exception)
            {
                log.AddLogCritical("Recuperando perfil", exception.Message, this);
                return(new ResultBM(ResultBM.Type.EXCEPTION, SessionHelper.GetTranslation("UPDATING_ERROR") + " " + exception.Message, exception));
            }
        }
示例#10
0
        public DataTable GetProfile()
        {
            ProfileDAL objDAL = new ProfileDAL();

            return(objDAL.ReadProfile());
        }
示例#11
0
        /// <summary>
        /// Recupera un perfil en base a su id.
        /// </summary>
        /// <param name="profileId"></param>
        /// <returns></returns>
        public ResultBM GetProfile(string profileId)
        {
            try {
                List <PermissionDTO> permissions;
                ProfileDAL           profileDal = new ProfileDAL();
                ProfileBM            result;

                string fatherCode;
                string code;
                string description;
                bool   excluded;

                bool moreItemsToAdd = true;
                int  maxIterations  = 0; //Condición de corte del while en caso de una eventualidad
                log.AddLogInfo("Recuperando perfil", "Recuperando perfil " + profileId + ".", this);

                permissions = profileDal.GetProfile(profileId);

                if (permissions == null)
                {
                    throw new Exception(SessionHelper.GetTranslation("NO_PERMISSION_FOUND_ERROR"));
                }
                else if (permissions.Count == 1)
                {
                    //En caso de obtener sólo un permiso, debe crearse como hijo.
                    fatherCode  = permissions[0].fatherCode;
                    code        = permissions[0].code;
                    description = permissions[0].description;
                    excluded    = permissions[0].excluded;
                    result      = new PermissionMDL(fatherCode, code, description, excluded);
                }
                else
                {
                    //La estrategia consiste en obtener el primer elemento y considerarlo root (garantizado por la base de dato).
                    //Luego, recorrer la lista de los permisos y asignarlos al root hasta que la lista de permisos esté vacía.
                    //Para vaciar la lista, considerar la siguiente estrategia: si se agregó, se borra de la lista.
                    fatherCode  = permissions[0].fatherCode;
                    code        = permissions[0].code;
                    description = permissions[0].description;
                    excluded    = permissions[0].excluded;
                    result      = new PermissionsMDL(fatherCode, code, description, excluded);

                    while (moreItemsToAdd)
                    {
                        for (int i = permissions.Count - 1; i > 0; --i)
                        {
                            fatherCode  = permissions[i].fatherCode;
                            code        = permissions[i].code;
                            description = permissions[i].description;
                            excluded    = permissions[i].excluded;

                            if (result.AddPermissionSorted(new PermissionMDL(fatherCode, code, description, excluded)))
                            {
                                permissions.RemoveAt(i);
                            }
                        }

                        maxIterations += 1;
                        moreItemsToAdd = (permissions.Count > 0 && maxIterations < 100);
                    }
                }

                log.AddLogInfo("Recuperando perfil", "Perfil " + profileId + " recuperado.", this);
                return(new ResultBM(ResultBM.Type.OK, "Permiso recuperado.", result));
            }
            catch (Exception exception)
            {
                log.AddLogCritical("Recuperando perfil", exception.Message, this);
                return(new ResultBM(ResultBM.Type.EXCEPTION, SessionHelper.GetTranslation("RETRIEVING_ERROR") + " " + exception.Message, exception));
            }
        }
示例#12
0
        public List <CoreProfile> GetProfileList()
        {
            ProfileDAL dal = new ProfileDAL();

            return(dal.GetProfileList());
        }