/// <exception cref="InstanceNotFoundException">If comentarioId doesn't match an existing Comentario</exception> public void ModifyComentarioAndEtiqueta(long comentarioId, string texto, List <Etiqueta> etiquetasFinales) { Comentario comentario = ComentarioDao.Find(comentarioId); comentario.texto = texto; ComentarioDao.Update(comentario); if (etiquetasFinales != null) { foreach (Etiqueta e in etiquetasFinales) { if (!comentario.Etiquetas.Contains(e)) { Etiquetar(comentarioId, e.etiquetaId); } } EntityCollection <Etiqueta> etiquetasComentario = new EntityCollection <Etiqueta>(); // Al eliminar etiquetas de los comentarios la lista referenciada de etiquetas fallaba. foreach (Etiqueta e in etiquetasComentario.Union(comentario.Etiquetas).ToList()) { if (!etiquetasFinales.Contains(e)) { Desetiquetar(comentarioId, e.etiquetaId); } } } }
/// <exception cref="InstanceNotFoundException">If comentarioId doesn't match an existing Comentario or if etiquetaId doesn't match an existing Etiqueta</exception> private void Etiquetar(long comentarioId, long etiquetaId) { Comentario comentario = ComentarioDao.Find(comentarioId); Etiqueta etiqueta = EtiquetaDao.Find(etiquetaId); if (!comentario.Etiquetas.Contains(etiqueta)) { etiqueta.ocurrencias = etiqueta.ocurrencias + 1; comentario.Etiquetas.Add(etiqueta); etiqueta.Comentarios.Add(comentario); EtiquetaDao.Update(etiqueta); ComentarioDao.Update(comentario); } }
/// <exception cref="InstanceNotFoundException">If comentarioId doesn't match an existing Comentario or if etiquetaId doesn't match an existing Etiqueta</exception> private void Desetiquetar(long comentarioId, long etiquetaId) { Comentario comentario = ComentarioDao.Find(comentarioId); Etiqueta etiqueta = EtiquetaDao.Find(etiquetaId); if (comentario.Etiquetas.Contains(etiqueta)) { comentario.Etiquetas.Remove(etiqueta); } if (etiqueta.ocurrencias >= 0) { etiqueta.ocurrencias = etiqueta.ocurrencias - 1; } etiqueta.Comentarios.Remove(comentario); EtiquetaDao.Update(etiqueta); ComentarioDao.Update(comentario); }