Exemplo n.º 1
0
        public ActionResult Delete(int id)
        {
            var ComissaoAgendaExcluir = contexto.Comissao.FirstOrDefault(x => x.AgendaId == id);

            if (ComissaoAgendaExcluir != null)
            {
                var bdComisao = new ComissaoRepositorioEF(contexto);

                bdComisao.Excluir(x => x.AgendaId == id);
                bdComisao.SalvarTodos();
            }
            var bdAgenda = new AgendaRepositorioEF(contexto);

            bdAgenda.Excluir(x => x.AgendaId == id);
            bdAgenda.SalvarTodos();
            return(RedirectToAction("IndexAgenda"));
        }
Exemplo n.º 2
0
        public JsonResult Create(Agenda Agenda)
        {
            var Retorno = new RetornoJson();

            if (Agenda.FuncionarioId == 0)
            {
                Retorno.Mensagem += "<span> Escolha o Funcionario</span>";
            }
            if (Agenda.ClienteId == 0)
            {
                Retorno.Mensagem += "<span> Escolha o Cliente</span>";
            }
            if (Agenda.ServicoId == 0)
            {
                Retorno.Mensagem += "<span> Escolha o Servico</span>";
            }

            if (Retorno.Mensagem != "")
            {
                return(Json(Retorno, JsonRequestBehavior.AllowGet));
            }

            TimeSpan minuto = new TimeSpan(00, 30, 00);


            DateTime DataAgenda = DateTime.Parse(Agenda.DataAgendamento.ToString());

            Agenda.Inicio = DataAgenda + Agenda.Inicio.TimeOfDay;
            Agenda.Fim    = DataAgenda + Agenda.Fim.TimeOfDay;

            //validar se o horario Inicio é menor que o Fim
            if (Agenda.Inicio >= Agenda.Fim)
            {
                Retorno.Mensagem += "<span> Horario Inicio é obrigatoriamente menor que o horário Fim</span>";
            }

            //validar se a data ultrapassa 4 meses
            DateTime AgendamentoDistante = DateTime.Now.AddMonths(4);

            if (Agenda.Fim > AgendamentoDistante)
            {
                Retorno.Mensagem += "<span> Agendamento não pode ultrapassar 4 meses</span>";
            }

            //agendamentos somente devem ser feito em horario de funcionamento
            TimeSpan HorarioAbre  = new TimeSpan(10, 00, 00);
            TimeSpan HorarioFecha = new TimeSpan(20, 00, 00);

            if (!(Agenda.Inicio.Hour >= HorarioAbre.Hours && Agenda.Inicio.Hour <= HorarioFecha.Hours) || !(Agenda.Fim.Hour >= HorarioAbre.Hours && Agenda.Fim.Hour <= HorarioFecha.Hours))
            {
                Retorno.Mensagem += "<span> O Agendamento deve ser dentro do horário de funcionamento do estabelecimento</span>";
            }


            //todo agendamento deve ser agendado com 30 minutos de antecedencia
            DateTime DataHoraRetroativa = Agenda.Inicio.Subtract(minuto);

            if (DataHoraRetroativa <= DateTime.Now)
            {
                Retorno.Mensagem += "<span> Não é possivel agendar nesta data, pois todos agendamentos precisam ter pelo menos 30 minutos de antecedencia</span>";
            }

            //nao pode agendar em horario igual com o mesmo funcionario
            var agendaMarcada = contexto.Agenda.Where(x => x.FuncionarioId == Agenda.FuncionarioId).Count(x => (Agenda.Inicio >= x.Inicio && Agenda.Inicio <= x.Fim) || (Agenda.Fim >= x.Inicio && Agenda.Fim <= x.Fim)) > 0;

            if (agendaMarcada)
            {
                Retorno.Mensagem += "<span> Escolha outro horario</span>";
            }


            if (Retorno.Mensagem != "")
            {
                return(Json(Retorno, JsonRequestBehavior.AllowGet));
            }

            try
            {
                var bdAgenda = new AgendaRepositorioEF(contexto);
                bdAgenda.Adicionar(Agenda);
                bdAgenda.SalvarTodos();

                //tratando as comissoes
                if (Agenda.Pago == true)
                {
                    using (var bdComisao = new ComissaoRepositorioEF(contexto))
                    {
                        Comissao comissao = new Comissao();
                        comissao.Data          = DateTime.Now;
                        comissao.AgendaId      = Agenda.AgendaId;
                        comissao.FuncionarioId = Agenda.FuncionarioId;
                        comissao.ServicoId     = Agenda.ServicoId;
                        comissao.valorComissao = (Agenda.Servico.Preco * 5) / 100;

                        bdComisao.Adicionar(comissao);
                        bdComisao.SalvarTodos();
                    }
                }

                Retorno.Sucesso      = true;
                Retorno.Mensagem    += "<span> Cadastrado com sucesso</span>";
                Retorno.Redirecionar = true;
                Retorno.Link         = "/Admin/Agenda/IndexAgenda";
            }
            catch (Exception e)
            {
                Retorno.Mensagem += "<span> Não foi possivel persistir seu agendamento</span>";
            }
            return(Json(Retorno, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 3
0
        public JsonResult Edit(Agenda Agenda)
        {
            var      Retorno = new RetornoJson();
            TimeSpan minuto  = new TimeSpan(00, 30, 00);

            DateTime DataAgenda = DateTime.Parse(Agenda.DataAgendamento.ToString());

            Agenda.Inicio = DataAgenda + Agenda.Inicio.TimeOfDay;
            Agenda.Fim    = DataAgenda + Agenda.Fim.TimeOfDay;

            //validar se o horario Inicio é menor que o Fim
            if (Agenda.Inicio >= Agenda.Fim)
            {
                Retorno.Mensagem += "<span> Horario Inicio é obrigatoriamente menor que o horário Fim</span>";
            }

            //validar se a data ultrapassa 4 meses
            DateTime AgendamentoDistante = DateTime.Now.AddMonths(4);

            if (Agenda.Fim > AgendamentoDistante)
            {
                Retorno.Mensagem += "<span> Agendamento não pode ultrapassar 4 meses</span>";
            }

            //agendamentos somente devem ser feito em horario de funcionamento
            TimeSpan HorarioAbre  = new TimeSpan(10, 00, 00);
            TimeSpan HorarioFecha = new TimeSpan(20, 00, 00);

            if (!(Agenda.Inicio.Hour >= HorarioAbre.Hours && Agenda.Inicio.Hour <= HorarioFecha.Hours) || !(Agenda.Fim.Hour >= HorarioAbre.Hours && Agenda.Fim.Hour <= HorarioFecha.Hours))
            {
                Retorno.Mensagem += "<span> O Agendamento deve ser dentro do horário de funcionamento do estabelecimento</span>";
            }


            //todo agendamento deve ser agendado com 30 minutos de antecedencia
            DateTime DataHoraRetroativa = Agenda.Inicio.Subtract(minuto);

            if (DataHoraRetroativa <= DateTime.Now)
            {
                Retorno.Mensagem += "<span> Não é possivel agendar nesta data, pois todos agendamentos precisam ter pelo menos 30 minutos de antecedencia</span>";
            }

            //nao pode agendar em horario igual com o mesmo funcionario mas como esta editando ele aceita o mesmo horario ainda que foi criado o agendamento inicial
            var EditandoMesmaAgendamento = contexto.Agenda.Any(x => x.FuncionarioId == Agenda.FuncionarioId &&
                                                               x.Inicio == Agenda.Inicio && x.Fim == Agenda.Fim && x.ClienteId == Agenda.ClienteId
                                                               );

            if (!EditandoMesmaAgendamento)
            {
                var agendaMarcada = contexto.Agenda.Where(x => x.FuncionarioId == Agenda.FuncionarioId).Count(x => (Agenda.Inicio >= x.Inicio && Agenda.Inicio <= x.Fim) || (Agenda.Fim >= x.Inicio && Agenda.Fim <= x.Fim)) > 0;
                if (agendaMarcada)
                {
                    Retorno.Mensagem += "<span> Escolha outro horario</span>";
                }
            }


            if (Retorno.Mensagem != "")
            {
                return(Json(Retorno, JsonRequestBehavior.AllowGet));
            }


            var bdAgenda = new AgendaRepositorioEF(contexto);

            bdAgenda.Atualizar(Agenda);
            bdAgenda.SalvarTodos();

            //abaixo tratando as comissoes
            if (Agenda.Pago == false)
            {
                var Existecomissao = contexto.Comissao.FirstOrDefault(x => x.AgendaId == Agenda.AgendaId);
                if (Existecomissao != null)
                {
                    //se o usuario setar como nao pago o agendamento exclui a comissao
                    using (var bdComisao = new ComissaoRepositorioEF(contexto))
                    {
                        var comissao = contexto.Comissao.FirstOrDefault(x => x.AgendaId == Agenda.AgendaId);
                        bdComisao.Excluir(x => x.AgendaId == Agenda.AgendaId);
                        bdComisao.SalvarTodos();
                    }
                }
            }
            //se o usuario editar  e deixar agenda paga, edita a comissao
            if (Agenda.Pago == true)
            {
                using (var bdComisao = new ComissaoRepositorioEF(contexto))
                {
                    var comissao = contexto.Comissao.FirstOrDefault(x => x.AgendaId == Agenda.AgendaId);

                    //no caso do usuario ter excluido a comissao cria ela denovo
                    if (comissao == null)
                    {
                        {
                            Comissao c = new Comissao();
                            c.Data          = DateTime.Now;
                            c.AgendaId      = Agenda.AgendaId;
                            c.FuncionarioId = Agenda.FuncionarioId;
                            c.ServicoId     = Agenda.ServicoId;
                            c.valorComissao = (Agenda.Servico.Preco * 5) / 100;

                            bdComisao.Adicionar(c);
                            bdComisao.SalvarTodos();
                        }
                    }
                    else // neste caso ele nao excluiu a comissao apenas editou a agenda e deixou agenda paga
                    {
                        comissao.Data          = comissao.Data;
                        comissao.AgendaId      = comissao.AgendaId;
                        comissao.FuncionarioId = Agenda.FuncionarioId;
                        comissao.ServicoId     = Agenda.ServicoId;
                        comissao.valorComissao = (Agenda.Servico.Preco * 5) / 100;

                        bdComisao.Atualizar(comissao);
                        bdComisao.SalvarTodos();
                    }
                }
            }

            Retorno.Mensagem += "<span> Editado com sucesso</span>";

            Retorno.Sucesso      = true;
            Retorno.Redirecionar = true;
            Retorno.Link         = "/Admin/Agenda/IndexAgenda";

            return(Json(Retorno, JsonRequestBehavior.AllowGet));
        }