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"]); }
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); } }
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(); } }
//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(); }
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)); } }
private static RevisionModel SortRevisions(RevisionModel model) { model.data.OrderByDescending(d => d.spaced_correct_run_length).OrderByDescending(d => d.due_for_revision); return(model); }
public void ActualizarRevisionArticulo(RevisionModel revision) { revisorArticuloHandler.ActualizarEstadoRevisionArticulo(revision); NotificarCoordinadorRevisionFinalizada(revision.idArticuloFK); }