public void Update(ComponentePutDTO dto, int id) { var query = _uow.ComponenteRepository.GetById(id).Include(x => x.ComponenteTags).Include(x => x.ComponenteDependencias); var componente = query.FirstOrDefault(); if (dto.ImagemPut != null) { var imageUrl = _imageUpload.SaveImage(dto.ImagemPut); componente.Imageurl = imageUrl; } componente.Nome = dto.Nome; componente.Arquivo = dto.Arquivo; componente.Descricao = dto.Descricao; componente.Exemplo = dto.Exemplo; componente.Observacao = dto.Observacao; componente.Publicado = dto.Publicado; componente.CategoriaId = dto.IdCategoria; componente.FrameworkId = dto.IdFramework; componente.Status = dto.Status; componente.IdUsuarioUltimaAlteracao = IdUsuario; componente.DataUltimaAlteracao = DateTime.Now; var tagsToDelete = componente.ComponenteTags.Where(x => !dto.Tags.Select(y => y.Id).Contains(x.TagId)).ToList(); if (tagsToDelete.Count > 0) { _uow.ComponenteTagRepository.MassDelete(tagsToDelete); } var tagsToRelate = dto.Tags.Where(x => x.Id > 0 && !componente.ComponenteTags.Select(y => y.TagId).Contains(x.Id)).ToList(); if (tagsToRelate.Count > 0) { _uow.ComponenteTagRepository.AddRange(tagsToRelate.Select(x => new ComponenteTag { TagId = x.Id, Componente = componente }).ToList()); } var tagsToAdd = dto.Tags.Where(x => x.Id == 0).ToList(); if (tagsToAdd.Count > 0) { _uow.ComponenteTagRepository.AddRange(tagsToAdd.Select(x => new ComponenteTag { Componente = componente, Tag = new Tag { Nome = x.Nome } }) .ToList()); } Validate(componente); _uow.Commit(); }
public ActionResult Update(int id, ComponentePutDTO dto) { _appService.Update(dto, id); return(Ok()); }