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")); }
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)); }
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)); }