예제 #1
0
        public ActionResult Cancelar(CancelarAgendamentoViewModel model)
        {
            if (!ModelState.IsValid)
            {
                Callback(new Exception("Dados inválidos."));
            }
            else
            {
                try
                {
                    agendaService.CancelarAgendamento(model);
                    Callback();
                }
                catch (Exception ex)
                {
                    Callback(ex);
                }
            }

            return(RedirectToAction("Index", new { model.DataAgendamento }));
        }
예제 #2
0
        public void CancelarAgendamento(CancelarAgendamentoViewModel model)
        {
            TB_AGENDA agendamento = context.TB_AGENDA
                                    .Include(x => x.TB_SERVICOS)
                                    .Single(x => x.Id == model.IdAgendamento);

            //regra de cancelamento para massagens
            if (agendamento.TB_SERVICOS.BT_MASSAGEM)
            {
                if ((agendamento.DT_AGENDAMENTO - DateTime.Now).TotalHours < 24)
                {
                    throw new Exception(ExceptionMessages.CancelarVinteQuatroHorasAntecedencia);
                }

                if (agendamento.QT_SESSOES_AGENDAMENTO == 1)
                {
                    RemoverSessoes(model.IdAgendamento);
                }
                else
                {
                    RL_SECAO_AGENDAMENTO sessaoAgendamento = context.RL_SECAO_AGENDAMENTO
                                                             .Include(x => x.TB_SECOES)
                                                             .Single(x => x.ID_AGENDAMENTO == model.IdAgendamento);
                    context.TB_AGENDA.Remove(agendamento);
                    context.RL_SECAO_AGENDAMENTO.Remove(sessaoAgendamento);

                    context.SaveChanges();
                }
            }
            else //regra de cancelamento para demais serviços
            {
                if (DateTime.Now > agendamento.DT_AGENDAMENTO.Date)
                {
                    throw new Exception(ExceptionMessages.NaoEPossivelCancelarAgendamento);
                }

                RemoverSessoes(model.IdAgendamento);
            }
        }