public async Task <Response> Handle(CadastrarMesaRequest request, CancellationToken cancellationToken)
        {
            //Validar se o requeste veio preenchido
            if (request == null)
            {
                AddNotification("Resquest", "Preencha as informações da mesa");
                return(new Response(this));
            }


            var proprietario = _repositoryProprietario.ObterPorId(request.FkProprietario.Value);
            var empresa      = _repositoryEmpresa.ObterPorId(Guid.Parse(proprietario.EmpresaUltimoAcesso));

            var contains = empresa.Mesas.Where(x => x.Numero == request.Numero);

            if (contains == null)
            {
                AddNotification("Mesa", "A mesa já foi cadastrada");
                return(new Response(this));
            }

            Entities.Mesa mesa = new Entities.Mesa(request.Numero, empresa);

            if (IsInvalid())
            {
                return(new Response(this));
            }
            AddNotifications(mesa);
            mesa = _repositoryMesa.Adicionar(mesa);

            empresa.AdicionarMesa(mesa);
            _repositoryEmpresa.Editar(empresa);

            try
            {
                _unitOfWork.SaveChanges();
            }
            catch (Exception ex)
            {
                this.AddNotification("Adicionar Empresa", "Erro ao persistir dados: " + ex.Message);
            }
            if (IsInvalid())
            {
                return(new Response(this));
            }

            var result   = new { Id = mesa.Id, Nome = mesa.Numero, Empresa = mesa.Empresa.Fantasia };
            var response = new Response(this, result);

            return(await Task.FromResult(response));
        }
Exemplo n.º 2
0
        public async Task <Response> Handle(CadastrarItemRequest request, CancellationToken cancellationToken)
        {
            if (request == null)
            {
                AddNotification("Resquest", "Preencha as informações do Item");
                return(new Response(this));
            }

            var    empresa = _repositoryEmpresa.ObterPorId(request.FkEmpresa.Value);
            string urlFoto = "";

            if (empresa == null)
            {
                AddNotification("Empresa", "Empresa inválida");
                return(new Response(this));
            }

            //if (request.Foto != null)
            //{
            //    urlFoto = "Imagens/" + _imagem.UploadImage(request.Foto).Result;
            //}


            Entities.Item item = new Entities.Item(request.Nome, request.Descricao, request.Valor, urlFoto, request.Tipo, empresa);
            if (IsInvalid())
            {
                return(new Response(this));
            }
            AddNotifications(item);

            item = _repositoryItem.Adicionar(item);
            empresa.AdicionarItem(item);
            _repositoryEmpresa.Editar(empresa);

            try
            {
                _unitOfWork.SaveChanges();
            }
            catch (Exception ex)
            {
                this.AddNotification("Adicionar Item", "Erro ao persistir dados: " + ex.Message);
            }

            var result = new { Nome = item.Nome, Descricao = item.Descricao, Valor = item.Valor, UrlFoto = item.Foto, Empresa = item.Empresa.Fantasia };

            var response = new Response(this, result);

            return(await Task.FromResult(response));
        }
        public async Task <Response> Handle(AvaliarRestauranteRequest request, CancellationToken cancellationToken)
        {
            if (request == null)
            {
                AddNotification("Resquest", "Preencha as informações da avaliação");
                return(new Response(this));
            }

            var usuario = _repositoryUsuario.ObterPorId(request.FkUsuario.Value);
            var empresa = _repositoryEmpresa.ObterPorId(request.FkEmpresa.Value);

            Entities.Avaliacao avaliacao = new Entities.Avaliacao(request.Estrelas, request.Comentario, empresa, usuario);
            if (IsInvalid())
            {
                return(new Response(this));
            }

            avaliacao = _repositoryAvaliacao.Adicionar(avaliacao);

            empresa.AdicionarAvaliacao(avaliacao);
            _repositoryEmpresa.Editar(empresa);

            usuario.AdicionarAvaliacao(avaliacao);
            _repositoryUsuario.Editar(usuario);
            try
            {
                _unitOfWork.SaveChanges();
            }
            catch (Exception ex)
            {
                this.AddNotification("Avaliar Empresa", "Erro ao persistir dados: " + ex.Message);
            }

            var result = new
            {
                Id         = avaliacao.Id,
                Estrelas   = avaliacao.Estrelas,
                Comentario = avaliacao.Comentario,
                Usuario    = new { Id = avaliacao.Usuario.Id, Nome = avaliacao.Usuario.Nome, Foto = avaliacao.Usuario.Foto }
            };

            var response = new Response(this, result);

            return(await Task.FromResult(response));
        }