Exemple #1
0
        public ActionResult GetItemYamlWithChildren(RevisionModel data)
        {
            var guid = Guid.Parse(data.Id);

            using (new SecurityDisabler())
            {
                IItemData   item          = _sitecore.GetItemData(guid);
                var         localRev      = _sitecore.GetItemAndChildrenRevision(guid);
                List <Guid> GrandChildren = new List <Guid>();
                var         items         = new List <KeyValuePair <Guid, string> >();
                if (data.Rev == null || !data.Rev.ContainsKey(item.Id) || data.Rev[item.Id] != localRev[item.Id])
                {
                    using (var stream = new MemoryStream())
                    {
                        _yamlSerializationService.WriteSerializedItem(item, stream);
                        stream.Seek(0, SeekOrigin.Begin);

                        using (var reader = new StreamReader(stream))
                        {
                            items.Add(new KeyValuePair <Guid, string>(item.Id, reader.ReadToEnd()));
                        }
                    }
                }
                else
                {
                    items.Add(new KeyValuePair <Guid, string>(item.Id, null));
                }
                if (item.Path.StartsWith("/sitecore/media library/"))
                {
                    GrandChildren.AddRange(_sitecore.GetChildren(item).Select(x => x.Id));
                }
                else
                {
                    items.AddRange(_sitecore.GetChildren(item).Select(x =>
                    {
                        GrandChildren.AddRange(_sitecore.GetChildren(x).Select(c => c.Id));
                        if (data.Rev != null && data.Rev.ContainsKey(x.Id) && localRev.ContainsKey(x.Id) && data.Rev[x.Id] == localRev[x.Id])
                        {
                            return(new KeyValuePair <Guid, string>(x.Id, null));
                        }
                        using (var stream = new MemoryStream())
                        {
                            _yamlSerializationService.WriteSerializedItem(x, stream);
                            stream.Seek(0, SeekOrigin.Begin);

                            using (var reader = new StreamReader(stream))
                            {
                                return(new KeyValuePair <Guid, string>(x.Id, reader.ReadToEnd()));
                            }
                        }
                    }));
                }
                return(ScsJson(new ChildrenItemDataModel
                {
                    Items = items,
                    GrandChildren = GrandChildren
                }));
            }
        }
        public IActionResult OnPostEnviar()
        {
            string recomend_final = "Rechazar";

            if (recomendacion == 0)
            {
                recomend_final = "Aceptar";
            }
            else if (recomendacion == 1)
            {
                recomend_final = "Aceptar con Modificaciones";
            }

            double merito = informacionMiembroController.GetMeritos(Request.Cookies["usernamePK"]);

            RevisionModel revision = new RevisionModel();

            revision.opinion        = opinion;
            revision.contribucion   = contribucion;
            revision.forma          = forma;
            revision.estadoRevision = "Finalizada";
            revision.comentarios    = comentario;
            revision.recomendacion  = recomend_final;
            revision.usernameMiemFK = Request.Cookies["usernamePK"];
            revision.idArticuloFK   = idArticuloPK;

            /* Crear nuevo controlador de revisor de artículo */
            revisorArticulosController.ActualizarRevisionArticulo(revision);

            List <ArticuloModel> articulosRevisionFinalizada = buscadorArticuloController.GetArticulosRevisionFinalizada();

            bool revFinalizada = false;

            foreach (ArticuloModel articuloRev in articulosRevisionFinalizada)
            {
                if (idArticuloPK == articuloRev.articuloAID)
                {
                    revFinalizada = true;
                }
            }

            if (revFinalizada)
            {
                string mensaje = "Estimado Coordinador, se ha finalizado las revisiones del articulo " + articulo.titulo + " . Por favor proceder a realizar un veredicto.";
                string url     = "/ArticulosParaRevisionCoordinador";

                Notificacion notificacion = new Notificacion(buscadorMiembrosController.GetMiembroCoordinador().usernamePK, mensaje, url);

                creadorNotificacionController.CrearNotificacion(notificacion);
            }

            AvisosInmediatos.Set(this, "revisionExitosa", "Su revisión se ha efectuado exitosamente", AvisosInmediatos.TipoAviso.Exito);
            return(Redirect("MisArticulosPorRevisar"));
        }
        public void OnGet()
        {
            articulo = informacionArticuloController.GetInformacionArticuloModel(idArticuloPK);
            autores  = informacionArticuloController.GetAutoresDeArticuloString(idArticuloPK);
            topicos  = informacionArticuloController.GetCategoriaTopicosArticuloString(idArticuloPK);
            if (tipoArticulo == "Largo")
            {
                documentosArticuloController.CargarArticuloPDF(idArticuloPK, rutaCarpeta);
                articuloPDF = Convert.ToString(idArticuloPK) + ".pdf";
            }
            List <RevisionModel> revisionesModel = informacionArticuloController.GetRevisiones(idArticuloPK);

            revisionModel = revisionesModel.Find(x => x.usernameMiemFK == Request.Cookies["usernamePK"]);
        }
Exemple #4
0
        public List <RevisionModel> GetRevisiones(int id)
        {
            List <RevisionModel> revisiones = new List <RevisionModel>();

            String connectionString = AppSettings.GetConnectionString();

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                connection.Open();

                SqlCommand cmd = new SqlCommand("SELECT M.usernamePK, M.nombre, M.apellido1, M.apellido2, " +
                                                "NRA.estadoRevision, NRA.puntaje, NRA.opinionGeneral, NRA.contribucion, NRA.forma, " +
                                                "NRA.comentarios, NRA.recomendacion " +
                                                "FROM Miembro M " +
                                                "JOIN NucleoRevisaArticulo NRA " +
                                                "ON M.usernamePK = NRA.usernameMiemFK " +
                                                "JOIN Articulo A " +
                                                "ON NRA.idArticuloFK = A.articuloAID " +
                                                "WHERE A.articuloAID = @id", connection);

                cmd.Parameters.AddWithValue("@id", id);

                SqlDataReader reader = cmd.ExecuteReader();

                while (reader.Read())
                {
                    RevisionModel revision = new RevisionModel()
                    {
                        usernameMiemFK = reader["usernamePK"].ToString(),
                        nombreRevisor  = reader["nombre"].ToString() + " " + reader["apellido1"].ToString() + " " + ((!DBNull.Value.Equals(reader["apellido2"])) ? (string)reader["apellido2"] : null),
                        estadoRevision = reader["estadoRevision"].ToString(),
                        puntaje        = (!DBNull.Value.Equals(reader["puntaje"]) ? (double)reader["puntaje"] : 0.0),
                        opinion        = (!DBNull.Value.Equals(reader["opinionGeneral"]) ? (int)reader["opinionGeneral"] : 0),
                        contribucion   = (!DBNull.Value.Equals(reader["contribucion"]) ? (int)reader["contribucion"] : 0),
                        forma          = (!DBNull.Value.Equals(reader["forma"]) ? (int)reader["forma"] : 0),
                        comentarios    = (!DBNull.Value.Equals(reader["comentarios"]) ? reader["comentarios"].ToString() : null),
                        recomendacion  = reader["recomendacion"].ToString(),
                    };

                    revisiones.Add(revision);
                }

                reader.Close();

                return(revisiones);
            }
        }
Exemple #5
0
        public void ActualizarEstadoRevisionArticulo(RevisionModel revision)
        {
            string connectionString = AppSettings.GetConnectionString();

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                connection.Open();
                string cmdString = "UPDATE NucleoRevisaArticulo SET opinionGeneral = @opinion, " +
                                   "contribucion = @contribucion, forma = @forma, estadoRevision = @estadoRevision,  comentarios = @comentarios, " +
                                   "recomendacion = @recomendacion WHERE usernameMiemFK = @username AND idArticuloFK = @idArticulo";
                SqlCommand command = new SqlCommand(cmdString, connection);
                command.Parameters.AddWithValue("@opinion", revision.opinion);
                command.Parameters.AddWithValue("@contribucion", revision.contribucion);
                command.Parameters.AddWithValue("@forma", revision.forma);
                command.Parameters.AddWithValue("@estadoRevision", revision.estadoRevision);
                command.Parameters.AddWithValue("@comentarios", revision.comentarios);
                command.Parameters.AddWithValue("@recomendacion", revision.recomendacion);
                command.Parameters.AddWithValue("@username", revision.usernameMiemFK);
                command.Parameters.AddWithValue("@idArticulo", revision.idArticuloFK);
                command.ExecuteNonQuery();
            }
        }
Exemple #6
0
        //Not Equal Properties
        public static RevisionModel GetRevisionProperties <T>(this T source, T dest) where T : class
        {
            if (source.GetType() != dest.GetType())
            {
                throw new InvalidOperationException("Two objects should be from the same type");
            }

            var result = new RevisionModel
            {
                Id         = string.Empty,
                Properties = new Dictionary <string, object>(),
            };

            var flags            = BindingFlags.Public | BindingFlags.Instance;
            var sourceType       = typeof(T);
            var sourceProperties = sourceType.GetProperties(flags);

            foreach (var property in sourceProperties)
            {
                var propertyInfo        = sourceType.GetProperty(property.Name, flags);
                var sourcePropertyValue = propertyInfo.GetValue(source, null);

                if (property.Name == "Id")
                {
                    result.Id = sourcePropertyValue.ToString();
                    continue;
                }

                var destPropertyValue = propertyInfo.GetValue(dest, null);

                if (sourcePropertyValue == null || destPropertyValue == null)
                {
                    continue;
                }


                //if (sourcePropertyValue.IsGenericList())
                //{
                //    var count = (int)sourcePropertyValue.GetType().GetProperty("Count").GetValue(sourcePropertyValue, null);

                //    for (var i = 0; i < count; i++)
                //    {
                //        object[] index = { i };

                //        var mySourceObject = sourcePropertyValue.GetType().GetProperty("Items").GetValue(sourcePropertyValue, index);
                //        var myDestObject = destPropertyValue.GetType().GetProperty("Items").GetValue(destPropertyValue, index);

                //        if (mySourceObject == null || myDestObject == null)
                //            break;

                //        if (mySourceObject.Equals())
                //    }
                //}
                //else

                if (!sourcePropertyValue.Equals(destPropertyValue))
                {
                    //result.Properties.Add(new DictionaryModel { Key = property.Name, Value = sourcePropertyValue.ToString() });
                    result.Properties[property.Name] = sourcePropertyValue.ToString();
                }
            }

            return(result);
        }
 private void GetRevisions(RevisionModel model)
 {
     revisions        = model.data;
     selectedRevision = revisions.FirstOrDefault();
 }
Exemple #8
0
        public ActionResult Revisions(Guid id)
        {
            using (var db = ApplicationDbContext.Create())
            {
                var file = GetFile(id, db);

                EnsureUserIsAllowed(file.CatalogRecord, db);

                var model = new ManagedFileHistoryModel();
                model.File = file;

                model.IsUserCurator  = file.CatalogRecord.Curators.Any(x => x.UserName == User.Identity.Name);
                model.IsUserApprover = file.CatalogRecord.Approvers.Any(x => x.UserName == User.Identity.Name) ||
                                       OrganizationHelper.DoesUserHaveRight(db, User, file.CatalogRecord.Organization.Id, Right.CanApprove);

                string processingDirectory = SettingsHelper.GetProcessingDirectory(file.CatalogRecord.Organization, db);
                string path = Path.Combine(processingDirectory, file.CatalogRecord.Id.ToString());
                using (var repo = new LibGit2Sharp.Repository(path))
                {
                    List <Tuple <Commit, TreeEntry> > modificationCommits = new List <Tuple <Commit, TreeEntry> >();

                    string currentSha  = null;            // startingItemSha;
                    string currentPath = model.File.Name; //startingItemPath;
                    Tuple <Commit, TreeEntry> current = null;

                    foreach (Commit c in repo.Commits)
                    {
                        if (c.Tree.Any <TreeEntry>(entry => entry.Name == currentPath))
                        {
                            // If file with given name was found, check its SHA
                            TreeEntry te = c.Tree.First <TreeEntry>(entry => entry.Name == currentPath);

                            if (te.Target.Sha == currentSha)
                            {
                                // In case if file's SHA matches
                                // file was not changed in this commit
                                // and temporary commit need to be updated to current one
                                current = new Tuple <Commit, TreeEntry>(c, te);
                            }
                            else
                            {
                                // file's SHA doesn't match
                                // file was changed during commit (or is first one)
                                // current commit needs to be added to the commits collection
                                // The file's SHA updated to current one
                                modificationCommits.Add(new Tuple <Commit, TreeEntry>(c, te));
                                currentSha = te.Target.Sha;
                                current    = null;
                            }
                        }
                        else
                        {
                            // File with given name not found. this means it was renamed.
                            // SHA should still be the same
                            if (c.Tree.Any <TreeEntry>(entry => entry.Target.Sha == currentSha))
                            {
                                TreeEntry te = c.Tree.First <TreeEntry>(entry => entry.Target.Sha == currentSha);
                                currentPath = te.Name;
                                modificationCommits.Add(new Tuple <Commit, TreeEntry>(c, te));
                                current = null;
                            }
                        }
                    }

                    if (current != null)
                    {
                        modificationCommits.Add(current);
                    }

                    foreach (var m in modificationCommits)
                    {
                        RevisionModel h = RevisionModel.FromCommit(m.Item1, m.Item2, file);

                        // replace uuid with real user name
                        ApplicationUser user = db.Users
                                               .Where(x => x.Id == h.CommitterName)
                                               .FirstOrDefault();
                        if (user != null)
                        {
                            h.CommitterName  = user.FullName;
                            h.CommitterEmail = user.Email;
                            h.CommitterId    = user.Id;
                        }

                        model.Revisions.Add(h);
                    }
                }

                return(View(model));
            }
        }
Exemple #9
0
        private static RevisionModel SortRevisions(RevisionModel model)
        {
            model.data.OrderByDescending(d => d.spaced_correct_run_length).OrderByDescending(d => d.due_for_revision);

            return(model);
        }
Exemple #10
0
        public void ActualizarRevisionArticulo(RevisionModel revision)
        {
            revisorArticuloHandler.ActualizarEstadoRevisionArticulo(revision);

            NotificarCoordinadorRevisionFinalizada(revision.idArticuloFK);
        }