Exemplo n.º 1
0
        public async Task <IActionResult> Create(ReclamacoesViewModel reclamacoesViewModel, Reclamacoes reclamacao, int id)
        {
            if (ModelState.IsValid)
            {
                var cliente  = bd.Utilizadores.SingleOrDefault(c => c.Email == User.Identity.Name);
                var contrato = bd.Contratos.SingleOrDefault(c => c.UtilizadorId == cliente.UtilizadorId);

                reclamacao.Cliente = cliente;

                reclamacao.ContratoId    = contrato.ContratoId;
                reclamacao.FuncionarioId = contrato.FuncionarioId;

                reclamacao.EstadoResolução = false;
                reclamacao.EstadoResposta  = false;
                reclamacao.DataReclamacao  = DateTime.Now;

                reclamacao.Inactivo     = false;
                reclamacao.Descricao    = reclamacoesViewModel.Descricao;
                reclamacao.ReclamacaoId = reclamacoesViewModel.ReclamacaoId;


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

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



            return(View(reclamacao));
        }
        public async Task <IActionResult> Create([Bind("ServicoId,Nome,Descricao,TipoServicoId")] Servicos servicos)
        {
            if (!ModelState.IsValid)
            {
                ViewData["TipoServicoId"] = new SelectList(bd.TiposServicos, "TipoServicoId", "Nome");
                return(View(servicos));
            }
            bd.Add(servicos);
            await bd.SaveChangesAsync();

            ViewBag.Mensagem = "Serviço adicionado com sucesso.";
            return(View("Sucesso"));
        }
        public async Task <IActionResult> CreateClientes(RegistoUtilizadoresViewModel infoUtilizador)
        {
            IdentityUser utilizador = await _gestorUtilizadores.FindByNameAsync(infoUtilizador.Email);

            if (utilizador != null)
            {
                ModelState.AddModelError("Email", "Já existe um funcionário com o email que especificou.");
            }

            utilizador = new IdentityUser(infoUtilizador.Email);
            IdentityResult resultado = await _gestorUtilizadores.CreateAsync(utilizador, infoUtilizador.Password);

            if (!resultado.Succeeded)
            {
                ModelState.AddModelError("", "Não foi possível fazer o registo. Por favor tente mais tarde novamente e se o problema persistir contacte a assistência.");
            }
            else
            {
                await _gestorUtilizadores.AddToRoleAsync(utilizador, infoUtilizador.Role);
            }

            if (!ModelState.IsValid)
            {
                //ViewData["Roles_Nome"] = new SelectList(_context.Roles, "Roles_Nome", "Roles_Nome");
                return(View(infoUtilizador));
            }



            Utilizadores utilizadores = new Utilizadores
            {
                Nome           = infoUtilizador.Nome,
                DataNascimento = infoUtilizador.DataNascimento,
                Morada         = infoUtilizador.Morada,
                Nif            = infoUtilizador.Nif,
                CodigoPostal   = infoUtilizador.CodigoPostal,
                Email          = infoUtilizador.Email,
                Telemovel      = infoUtilizador.Telemovel,
                Role           = infoUtilizador.Role,
            };

            string contribuente = utilizadores.Nif;

            char firstChar = contribuente[0];

            if (firstChar.Equals('1') ||
                firstChar.Equals('2') ||
                firstChar.Equals('3') ||
                firstChar.Equals('5') ||
                firstChar.Equals('6') ||
                firstChar.Equals('8') ||
                firstChar.Equals('9'))
            {
                int checkDigit = (Convert.ToInt32(firstChar.ToString()) * 9);
                for (int i = 2; i <= 8; ++i)
                {
                    checkDigit += Convert.ToInt32(contribuente[i - 1].ToString()) * (10 - i);
                }

                checkDigit = 11 - (checkDigit % 11);
                if (checkDigit >= 10)
                {
                    checkDigit = 0;
                }

                if (checkDigit.ToString() != contribuente[8].ToString())
                {
                    ModelState.AddModelError("Nif", "Contribuinte Inválido, coloque novamente");
                    return(View(infoUtilizador));
                }
            }
            ;



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

            ViewBag.Mensagem = "Utilizador adicionado com sucesso.";
            return(View("SucessoClientes"));
        }
        public async Task <IActionResult> Create5(NovoContratoPasso4ViewModel contratoPasso4, Contratos contratos)
        {
            if (!ModelState.IsValid)
            {
                var clienteId = bd.Utilizadores.SingleOrDefault(e => e.UtilizadorId == contratos.UtilizadorId);

                ViewData["ClienteId"]   = contratos.ClienteId;
                ViewData["ClienteNome"] = clienteId.Nome;
                ViewData["PacoteId"]    = new SelectList(bd.Pacotes, "PacoteId", "Nome");
                ViewData["PromocoesId"] = new SelectList(bd.Promocoes, "PromocoesId", "Nome");
                return(View());
            }

            //Código que vai buscar o ID do funcionário que tem login feito e atribui automaticamente ao contrato
            var funcionario      = bd.Utilizadores.SingleOrDefault(c => c.Email == User.Identity.Name);
            var funcionarioEmail = bd.Utilizadores.SingleOrDefault(d => d.Email == funcionario.Email);

            contratos.FuncionarioId = funcionarioEmail.UtilizadorId;

            //Código que vai buscar o preço do pacote
            contratos.PacoteId = contratoPasso4.PacoteId;
            var pacoteid = bd.Pacotes.SingleOrDefault(e => e.PacoteId == contratos.PacoteId);

            contratos.PrecoPacote = pacoteid.Preco;

            //Código que vai buscar o nome do pacote
            contratos.NomePacote = pacoteid.Nome;

            ////Código que vai buscar o cliente
            //contratos.ClienteId = contratos.UtilizadorId;

            List <PromocoesPacotes> PromocoesDisponiveis = new List <PromocoesPacotes>();

            foreach (var pacote in bd.PromocoesPacotes)
            {
                if (contratos.PacoteId == pacote.PacoteId)
                {
                    PromocoesDisponiveis.Add(pacote);
                }
            }

            contratos.PromocoesId = contratoPasso4.PromocoesId;

            bool PromoDisponivel = false;

            foreach (var promocao in PromocoesDisponiveis)
            {
                if (contratos.PromocoesId == promocao.PromocoesId)
                {
                    PromoDisponivel = true;
                }
            }

            if (PromoDisponivel == false)
            {
                var clienteId = bd.Utilizadores.SingleOrDefault(e => e.UtilizadorId == contratos.UtilizadorId);

                ViewData["ClienteId"]    = contratos.UtilizadorId;
                ViewData["ClienteNome"]  = clienteId.Nome;
                ViewData["UtilizadorId"] = new SelectList(bd.Utilizadores, "UtilizadorId", "Nome");
                ViewData["PacoteId"]     = new SelectList(bd.Pacotes, "PacoteId", "Nome");
                ViewData["PromocaoDesc"] = new SelectList(bd.Promocoes, "PromocoesId", "PromocaoDesc");
                ViewData["PromocoesId"]  = new SelectList(bd.Promocoes, "PromocoesId", "Nome");

                ViewBag.Message = "A promoção que está a tentar aplicar não está disponível para o pacote selecionado";
                return(View(contratos));
            }

            //Código que vai buscar o desconto da promoção
            int promo      = contratos.PromocoesId;
            var promocaoid = bd.Promocoes.SingleOrDefault(e => e.PromocoesId == contratos.PromocoesId);

            contratos.PromocaoDesc = promocaoid.PromocaoDesc;

            //Cálculo do PrecoFinal
            contratos.PrecoFinal = contratos.PrecoPacote - contratos.PromocaoDesc;

            contratos.ClienteId    = contratoPasso4.ClienteId;
            contratos.CodigoPostal = contratoPasso4.CodigoPostal;
            contratos.DataFim      = contratoPasso4.DataFim;
            contratos.DataInicio   = contratoPasso4.DataInicio;
            contratos.Morada       = contratoPasso4.Morada;
            contratos.DistritosId  = contratoPasso4.DistritosId;


            bd.Add(contratos);
            await bd.SaveChangesAsync();

            List <ServicosPacotes>   servicosNoPacote   = new List <ServicosPacotes>();
            List <ServicosContratos> servicosNoContrato = new List <ServicosContratos>();

            foreach (var item in bd.ServicosPacotes)
            {
                if (item.PacoteId == pacoteid.PacoteId)
                {
                    servicosNoPacote.Add(item);
                }
            }

            foreach (var item in servicosNoPacote)
            {
                servicosNoContrato.Add(new ServicosContratos()
                {
                    ServicoId = item.ServicoId, ContratoId = contratos.ContratoId
                });
            }
            foreach (var item in servicosNoContrato)
            {
                bd.ServicosContratos.Add(item);
            }

            await bd.SaveChangesAsync();


            ViewBag.Mensagem = "Contrato adicionado com sucesso.";
            return(View("Sucesso"));
        }