public ResultList <AsignaturaDto> GetAsignaturas(string searchText, int pageIndex, int?pageCount, int idEstudio)
        {
            var result = new ResultList <AsignaturaDto>();

            UNIR.Comun.Servicios.RespuestaServicioOfArrayOfAsignaturaDtoWP8jzdkm resAsignaturas;
            var keyCache = string.Format(GlobalValues.CACHE_ASIGNATURAS_ESTUDIO, idEstudio);
            var cache    = _dataCache.Get <UNIR.Comun.Servicios.RespuestaServicioOfArrayOfAsignaturaDtoWP8jzdkm>(keyCache, GlobalValues.GROUP_CACHE_GESTOR);

            if (cache != null)
            {
                resAsignaturas = cache;
            }
            else
            {
                var configMinutes = ConfigurationManager.AppSettings["TimeMinutesWsGestor"];
                var minutes       = 0;
                if (!int.TryParse(configMinutes, out minutes))
                {
                    minutes = GlobalValues.DEFAULT_MINUTE_CACHE;
                }
                resAsignaturas = _estudiosService.ObtenerAsignaturasDeEstudio(idEstudio);
                _dataCache.Put(keyCache, resAsignaturas, GlobalValues.GROUP_CACHE_GESTOR, TimeSpan.FromMinutes(minutes));
            }

            if (resAsignaturas.EsError)
            {
                result.Errors.Add(string.Format(GestorWsStrings.ErrorWebServices, "ObtenerEstudiosUNIR(" + idEstudio + ")"));
                return(result);
            }
            pageCount = pageCount ?? 10;
            var query = resAsignaturas.Respuesta.AsQueryable();

            if (!string.IsNullOrEmpty(searchText))
            {
                query = query.Where(
                    e => e.sNombreAsignatura.ToLower().Trim().Contains(searchText.ToLower().Trim()));
            }
            var listado = query.Skip((pageIndex - 1) * pageCount.Value)
                          .Take(pageCount.Value).ToList();

            result.Elements      = listado;
            result.TotalElements = query.Count();
            result.PageCount     = listado.Count;

            return(result);
        }
Exemple #2
0
        public ResultValue <bool> VerificarDatos(int accountId)
        {
            /*
             * Errors = Errores que deben detener la tarea de sincronizacion
             * Warnings = Se notifica pero se continua con la sincronizacion
             * Messages = Se notifica pero se continua con la sincronizacion
             *            Existen Cursos con un SIS-ID de una asignatura que ya no lo trae el webServices del gestor
             */
            var result  = new ResultValue <bool>();
            var preData = PreValidarDatos(result, accountId);

            if (result.HasErrors)
            {
                return(result);
            }
            var resAccount       = preData.Item1;
            var resAccountExtend = preData.Item3;

            var resAsignaturas            = _wEstudios.ObtenerAsignaturasDeEstudio(int.Parse(resAccount.Value.SisId));
            var distinctLengthAsignaturas = resAccountExtend.Value.Asignaturas.Count() !=
                                            resAsignaturas.Respuesta.Length;

            if (distinctLengthAsignaturas)
            {
                result.Warnings.Add(CanvasExtedStrings.ErrorCantidadAsignaturasDiferentes);
                return(result);
            }
            else
            {
                if (resAsignaturas.Respuesta.Select(a => a.idAsignatura)
                    .Except(resAccountExtend.Value.Asignaturas.Select(a => a.Id)).Any())
                {
                    result.Warnings.Add(CanvasExtedStrings.ErrorAsignaturasDiferentes);
                    return(result);
                }
            }

            var resPeriodosActivos           = _wEstudios.ObtenerCursosDeAsignaturasDeEstudio(int.Parse(resAccount.Value.SisId));
            var distinctLengthPeriodoActivos = resPeriodosActivos.Respuesta.listaPeriodosActivos.Length !=
                                               resAccountExtend.Value.PeriodoActivos.Count();

            if (distinctLengthPeriodoActivos)
            {
                result.Warnings.Add(CanvasExtedStrings.ErrorCantidadPeriodoActivosDiferentes);
                return(result);
            }
            else
            {
                if (resPeriodosActivos.Respuesta.listaPeriodosActivos.Select(a => a.idPeriodoMatriculacion)
                    .Except(resAccountExtend.Value.PeriodoActivos.Select(a => a.Id)).Any())
                {
                    result.Warnings.Add(CanvasExtedStrings.ErrorPeriodoActivosDiferentes);
                    return(result);
                }
            }
            var courses = _context.CourseExtends.Where(a => a.AccountId == accountId)
                          .Select(a => a.IdAsignatura).ToArray();
            var noContiene = resAccountExtend.Value.Asignaturas.All(a => !courses.Contains(a.Id));

            if (noContiene)
            {
                result.Messages.Add(CanvasExtedStrings.ErrorCourseSisIdNoAsignatura);
                return(result);
            }
            result.Value = !result.HasErrors && !result.HasWarnings && !result.HasMessages;
            return(result);
        }