Пример #1
0
        public async Task <IActionResult> Create(ReclamacaoViewModel RVM, Reclamacao reclamacao, int id)
        {
            if (ModelState.IsValid)
            {
                var cliente  = _context.Users.SingleOrDefault(c => c.Email == User.Identity.Name);
                var contrato = _context.Contratos.SingleOrDefault(c => c.ContratoId == id);

                reclamacao.NomeCliente       = cliente.Nome;
                reclamacao.FuncionarioId     = contrato.FuncionarioId;
                reclamacao.ContratoId        = id;
                reclamacao.ResolvidoCliente  = false;
                reclamacao.ResolvidoOperador = false;
                reclamacao.PorResoponder     = true;
                reclamacao.DataReclamacao    = DateTime.Now;
                reclamacao.Assunto           = RVM.Assunto;
                reclamacao.Descricao         = RVM.Descricao;
                reclamacao.ReclamacaoId      = RVM.ReclamacaoId;

                _context.Add(reclamacao);
                await _context.SaveChangesAsync();

                ViewBag.Mensagem = "Reclamação enviada com sucesso";
                return(View("SucessoReclamacao"));
            }

            ModelState.AddModelError("", "Não foi possível registar a reclamação, tente novamente");

            return(View(reclamacao));
        }
        private void PopulaTela(string _idRec)
        {
            int _id;

            Int32.TryParse(_idRec, out _id);
            ReclamacaoViewModel c = r.getReclamacaoId(_id).FirstOrDefault();

            ddlCategoria.SelectedValue = c.CategoriaId.ToString();
            ddlBairro.SelectedValue    = c.BairrosId.ToString();
            ddlStatus.SelectedValue    = c.Status.ToString();
            txtTitulo.Text             = c.Titulo;
            txtEndereco.Text           = c.Endereco;
            txtDescricao.Text          = c.Descricao;
            ddlCategoria.Enabled       = false;
            ddlBairro.Enabled          = false;
            txtTitulo.Enabled          = false;
            txtEndereco.Enabled        = false;
            txtDescricao.Enabled       = false;
            btnLimpar.Visible          = false;
            foto.Visible = false;
            Button1.Text = "Salvar";
            if (c.Status == Status.Encerrada)
            {
                ddlStatus.Enabled = false;
                Button1.Visible   = false;
            }
            else
            {
                ddlStatus.Items.Remove(ddlStatus.Items.FindByText("Encerrada"));
            }
            MostraStatus(true);
        }
Пример #3
0
        public async Task <IActionResult> RespostaFeedback(ReclamacaoViewModel RVM, Feedback feedback, int id)
        {
            if (ModelState.IsValid)
            {
                var reclamacao = await _context.Reclamacao.Include(p => p.Feedback)
                                 .AsNoTracking()
                                 .SingleOrDefaultAsync(p => p.ReclamacaoId == id);

                var funcionario = await _context.Users.SingleOrDefaultAsync(c => c.Email == User.Identity.Name);

                reclamacao.ReclamacaoId      = RVM.ReclamacaoId;
                reclamacao.ContratoId        = RVM.ContratoId;
                reclamacao.NomeCliente       = RVM.NomeCliente;
                reclamacao.FuncionarioId     = funcionario.UsersId;
                reclamacao.Assunto           = RVM.Assunto;
                reclamacao.Descricao         = RVM.Descricao;
                reclamacao.ResolvidoOperador = RVM.ResolvidoOperador;
                reclamacao.ResolvidoCliente  = RVM.ResolvidoCliente;
                reclamacao.DataReclamacao    = RVM.DataReclamacao;
                reclamacao.PorResoponder     = false;

                var contrato = await _context.Contratos.SingleOrDefaultAsync(c => c.ContratoId == reclamacao.ContratoId);

                var cliente = await _context.Users.SingleOrDefaultAsync(c => c.UsersId == contrato.ClienteId);

                string email; string assunto; string mensagem;
                assunto  = "UPtel - Resposta ao feedback de " + reclamacao.NomeCliente;
                mensagem = "Caro/a " + reclamacao.NomeCliente + ", informamos que o nosso operador " + funcionario.Nome + " respondeu ao seu feedback";
                email    = cliente.Email;

                _context.Reclamacao.Update(reclamacao);
                await _context.SaveChangesAsync();

                feedback.FuncionarioId = funcionario.UsersId;
                feedback.DataFeedback  = DateTime.Now;
                feedback.Mensagem      = RVM.Mensagem;
                feedback.Nome          = funcionario.Nome;

                _context.Feedback.Add(feedback);
                await _context.SaveChangesAsync();

                try
                {
                    await _emailSender.SendEmailAsync(email, assunto, mensagem);
                }
                catch (Exception)
                {
                    return(RedirectToAction("RespostaFeedback"));
                }

                return(RedirectToAction(nameof(Index)));
            }

            ModelState.AddModelError("", "Não foi possível registar a reclamação, tente novamente");

            return(View(RVM));
        }
Пример #4
0
        public async Task <IActionResult> FeedbackCliente(ReclamacaoViewModel RVM, Feedback feedback, int id)
        {
            if (ModelState.IsValid)
            {
                var reclamacao = await _context.Reclamacao
                                 .Include(p => p.Feedback)
                                 .AsNoTracking()
                                 .SingleOrDefaultAsync(p => p.ReclamacaoId == id);

                var cliente = await _context.Users.SingleOrDefaultAsync(c => c.Email == User.Identity.Name);

                reclamacao.ContratoId        = RVM.ContratoId;
                reclamacao.NomeCliente       = RVM.NomeCliente;
                reclamacao.FuncionarioId     = reclamacao.FuncionarioId;
                reclamacao.Assunto           = RVM.Assunto;
                reclamacao.Descricao         = RVM.Descricao;
                reclamacao.ResolvidoOperador = reclamacao.ResolvidoOperador;
                reclamacao.ResolvidoCliente  = RVM.ResolvidoCliente;
                reclamacao.DataReclamacao    = RVM.DataReclamacao;
                reclamacao.PorResoponder     = true;

                _context.Reclamacao.Update(reclamacao);
                await _context.SaveChangesAsync();

                feedback.FuncionarioId = reclamacao.FuncionarioId;
                feedback.DataFeedback  = DateTime.Now;
                feedback.Mensagem      = RVM.Mensagem;
                feedback.ReclamacaoId  = id;
                feedback.Nome          = cliente.Nome;

                _context.Feedback.Add(feedback);
                await _context.SaveChangesAsync();

                ViewBag.Mensagem = "Feedback enviado com sucesso";
                return(View("SucessoFeedback"));
            }

            ModelState.AddModelError("", "Não foi possível registar a reclamação, tente novamente");

            return(View(RVM));
        }
Пример #5
0
        public async Task <IActionResult> RespostaFeedback(int?id)
        {
            ReclamacaoViewModel RVM = new ReclamacaoViewModel();

            var reclamacao = await _context.Reclamacao.Include(p => p.Feedback)
                             .AsNoTracking()
                             .SingleOrDefaultAsync(p => p.ReclamacaoId == id);


            RVM.ReclamacaoId      = reclamacao.ReclamacaoId;
            RVM.ContratoId        = reclamacao.ContratoId;
            RVM.NomeCliente       = reclamacao.NomeCliente;
            RVM.FuncionarioId     = reclamacao.FuncionarioId;
            RVM.Assunto           = reclamacao.Assunto;
            RVM.Descricao         = reclamacao.Descricao;
            RVM.ResolvidoOperador = reclamacao.ResolvidoOperador;
            RVM.ResolvidoCliente  = reclamacao.ResolvidoCliente;
            RVM.DataReclamacao    = reclamacao.DataReclamacao;
            RVM.ListaMensagens    = reclamacao.Feedback;

            return(View(RVM));
        }
Пример #6
0
        public async Task <IActionResult> RespostaReclamacaoOperador(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }
            ReclamacaoViewModel RVM = new ReclamacaoViewModel();
            var reclamacao          = await _context.Reclamacao.Include(p => p.Feedback)
                                      .AsNoTracking()
                                      .SingleOrDefaultAsync(p => p.ReclamacaoId == id);

            RVM.ReclamacaoId      = reclamacao.ReclamacaoId;
            RVM.ContratoId        = reclamacao.ContratoId;
            RVM.NomeCliente       = reclamacao.NomeCliente;
            RVM.FuncionarioId     = reclamacao.FuncionarioId;
            RVM.Assunto           = reclamacao.Assunto;
            RVM.Descricao         = reclamacao.Descricao;
            RVM.ResolvidoOperador = reclamacao.ResolvidoOperador;
            RVM.ResolvidoCliente  = reclamacao.ResolvidoCliente;
            RVM.DataReclamacao    = reclamacao.DataReclamacao;

            var feedback = await _context.Feedback.FirstOrDefaultAsync(x => x.ReclamacaoId == reclamacao.ReclamacaoId);

            var funcionario = await _context.Users.SingleOrDefaultAsync(c => c.Email == User.Identity.Name);

            if (feedback != null)
            {
                RVM.FuncionarioId = feedback.FuncionarioId;
                RVM.Mensagem      = feedback.Mensagem;
                RVM.DataFeedback  = feedback.DataFeedback;
            }

            if (reclamacao == null)
            {
                return(NotFound());
            }
            ViewData["ContartoId"] = new SelectList(_context.Contratos, "ContratoId", "ContratoId", RVM.ContratoId);
            return(View(RVM));
        }
Пример #7
0
        public async Task <IActionResult> Delete(int?id)
        {
            //if (id == null)
            //{
            //    return NotFound();
            //}

            //var reclamacao = await _context.Reclamacao
            //    .Include(r => r.Contratos)
            //    .FirstOrDefaultAsync(m => m.ReclamacaoId == id);
            //if (reclamacao == null)
            //{
            //    ViewBag.Mensagem = "O cliente já foi eliminado por outra pessoa.";
            //    return View("Sucesso");
            //}

            //return View(reclamacao);

            ReclamacaoViewModel RVM = new ReclamacaoViewModel();

            var reclamacao = await _context.Reclamacao.Include(p => p.Feedback)
                             .AsNoTracking()
                             .SingleOrDefaultAsync(p => p.ReclamacaoId == id);


            RVM.ReclamacaoId      = reclamacao.ReclamacaoId;
            RVM.ContratoId        = reclamacao.ContratoId;
            RVM.NomeCliente       = reclamacao.NomeCliente;
            RVM.FuncionarioId     = reclamacao.FuncionarioId;
            RVM.Assunto           = reclamacao.Assunto;
            RVM.Descricao         = reclamacao.Descricao;
            RVM.ResolvidoOperador = reclamacao.ResolvidoOperador;
            RVM.ResolvidoCliente  = reclamacao.ResolvidoCliente;
            RVM.DataReclamacao    = reclamacao.DataReclamacao;
            RVM.ListaMensagens    = reclamacao.Feedback;

            return(View(RVM));
        }
Пример #8
0
        private void PopulaReclamacao(int _idReclamcao)
        {
            btnResolver.Visible = false;
            string userId           = User.Identity.GetUserId();
            ApplicationDbContext db = new ApplicationDbContext();
            var role  = (from j in db.Roles where j.Name.Contains("Oficial") select j).FirstOrDefault();
            var users = db.Users.Where(x => x.Roles.Select(y => y.RoleId).Contains(role.Id)).ToList();

            ReclamacaoDal       r = new ReclamacaoDal();
            ReclamacaoViewModel c = r.getReclamacaoId(_idReclamcao).FirstOrDefault();
            var currentUserId     = c.UserId;

            var manager     = Context.GetOwinContext().GetUserManager <ApplicationUserManager>();
            var currentUser = manager.FindById(currentUserId);

            litUsuario.Text          = currentUser.UserName;
            litCategoria.Text        = c.Categoria;
            litBairro.Text           = c.Bairro;
            litDescricao.Text        = c.Descricao;
            litEndereco.Text         = c.Endereco;
            litTituloReclamacao.Text = c.Titulo;
            if (users.Find(x => x.Id == userId) != null)
            {
                if (c.Status == Status.Encerrada)
                {
                    btnResolver.Visible = false;
                }
                else
                {
                    btnResolver.Visible = true;
                }
            }

            litStatus.Text         = Enum.GetName(typeof(Status), c.Status);
            imgReclamacao.ImageUrl = @"~/Images/Reclamacao/" + c.Foto;
        }
Пример #9
0
        public IActionResult Create(int id)
        {
            ReclamacaoViewModel RVM = new ReclamacaoViewModel();

            return(View(RVM));
        }