Example #1
0
        public void Save(UsuarioPostDTO dto)
        {
            VerifyExists(dto, CommonMessages.InformacoesEntrada);

            if (_uow.UsuarioRepository.GetAll().Any(x => x.Login == dto.Login))
            {
                throw new DomainException("Login já em uso");
            }

            var usuario = new Usuario
            {
                Nome           = dto.Nome,
                Email          = dto.Email,
                Login          = dto.Login,
                Senha          = Helper.ComputeSha256Hash(dto.Senha),
                IsSuperUsuario = dto.IsSuperUsuario,
                IsAutorizado   = dto.IsAutorizado
            };

            if (!string.IsNullOrWhiteSpace(dto.Imagem) && !dto.Imagem.StartsWith("http"))
            {
                if (!string.IsNullOrWhiteSpace(usuario.ImageUrl))
                {
                    _imageUpload.DeleteImage(usuario.ImageUrl);
                }
                var imageUrl = _imageUpload.SaveImage(dto.Imagem);
                usuario.ImageUrl = imageUrl;
            }

            Validate(usuario);

            _uow.UsuarioRepository.Add(usuario);
            _uow.Commit();

            _emailService.SendAuthorizedEmail(usuario.Email).ConfigureAwait(false);
        }
        public void Save(ComponentePostDTO dto)
        {
            var componente = new Componente
            {
                Nome                     = dto.Nome,
                Status                   = dto.Status,
                Descricao                = dto.Descricao,
                UsuarioId                = IdUsuario,
                CategoriaId              = dto.IdCategoria,
                FrameworkId              = dto.IdFramework,
                Arquivo                  = dto.Arquivo,
                DataCriacao              = DateTime.Now,
                DataUltimaAlteracao      = DateTime.Now,
                IdUsuarioUltimaAlteracao = IdUsuario,
                Exemplo                  = dto.Exemplo,
                Observacao               = dto.Observacao,
                Parametros               = dto.Parametros.Select(p => new Parametro
                {
                    Nome                     = p.Nome,
                    Descricao                = p.Descricao,
                    Obrigatorio              = p.Obrigatorio,
                    TipoId                   = p.TipoId,
                    DataUltimaAlteracao      = DateTime.Now,
                    IdUsuarioUltimaAlteracao = IdUsuario
                }).ToList(),
                Metodos = dto.Metodos.Select(m => new Metodo
                {
                    Nome                     = m.Nome,
                    Descricao                = m.Descricao,
                    IdTipoRetorno            = m.IdTipoRetorno,
                    Exemplo                  = m.Exemplo,
                    DataUltimaAlteracao      = DateTime.Now,
                    IdUsuarioUltimaAlteracao = IdUsuario,
                    ParametrosMetodo         = m.ParametrosMetodo.Select(param => new ParametroMetodo
                    {
                        Nome                     = param.Nome,
                        Descricao                = param.Descricao,
                        Obrigatorio              = param.Obrigatorio,
                        TipoId                   = param.TipoId,
                        DataUltimaAlteracao      = DateTime.Now,
                        IdUsuarioUltimaAlteracao = IdUsuario
                    }).ToList()
                }).ToList(),
                Eventos = dto.Eventos.Select(m => new Evento
                {
                    Nome                     = m.Nome,
                    Descricao                = m.Descricao,
                    Exemplo                  = m.Exemplo,
                    DataUltimaAlteracao      = DateTime.Now,
                    IdUsuarioUltimaAlteracao = IdUsuario,
                    ParametrosEvento         = m.ParametrosEvento.Select(param => new ParametroEvento
                    {
                        Nome                     = param.Nome,
                        Descricao                = param.Descricao,
                        Obrigatorio              = param.Obrigatorio,
                        TipoId                   = param.TipoId,
                        DataUltimaAlteracao      = DateTime.Now,
                        IdUsuarioUltimaAlteracao = IdUsuario
                    }).ToList()
                }).ToList(),
                Publicado = dto.Publicado
            };

            if (!string.IsNullOrWhiteSpace(dto.Imagem) && !dto.Imagem.StartsWith("http"))
            {
                if (!string.IsNullOrWhiteSpace(componente.Imageurl))
                {
                    _imageUpload.DeleteImage(componente.Imageurl);
                }
                var imageUrl = _imageUpload.SaveImage(dto.Imagem);
                componente.Imageurl = imageUrl;
            }

            if (dto.Tags != null && dto.Tags.Count > 0)
            {
                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());
                }

                var tagsToRelate = dto.Tags.Where(x => x.Id > 0).ToList();

                if (tagsToRelate.Count > 0)
                {
                    _uow.ComponenteTagRepository.AddRange(tagsToRelate.Select(x => new ComponenteTag {
                        TagId = x.Id, Componente = componente
                    }).ToList());
                }
            }


            #region ===== Dependência =====

            var dependenciasToRelate = dto.Dependencias.Where(x => x.Id > 0).ToList();

            if (dependenciasToRelate.Count > 0)
            {
                _uow.ComponenteDependenciaRepository.AddRange(dependenciasToRelate.Select(p => new ComponenteDependencia
                {
                    DependenciaId            = p.Id,
                    Componente               = componente,
                    DataUltimaAlteracao      = DateTime.Now,
                    IdUsuarioUltimaAlteracao = IdUsuario
                }).ToList());
            }

            #endregion


            Validate(componente);
            _uow.ComponenteRepository.Add(componente);
            _uow.Commit();
        }