public void CadastrarServico(CadastroServicoViewModel model) { context.TB_SERVICOS.Add(new TB_SERVICOS { DS_SERVICO = model.Descricao, QT_SESSOES = model.TotalSessoes, TP_MINUTOS = model.DuracaoMinutos, BT_MASSAGEM = model.EhMassagem }); context.SaveChanges(); }
public void EditarCliente(ObterClienteViewModel model) { TB_CLIENTES cliente = context.TB_CLIENTES.Single(x => x.Id == model.Id); cliente.DS_NOME = model.Nome; cliente.NU_TELEFONE = model.Telefone; cliente.DS_ENDERECO = model.Endereco; cliente.CPF = model.Cpf; context.SaveChanges(); }
public void CadastrarAgendamento(CadastrarAgendamentoViewModel model) { TB_SERVICOS servico = context.TB_SERVICOS.Single(x => x.Id == model.IdServico); TB_SECOES secao = null; if (model.QuantidadeSessao > 0 && model.QuantidadeSessao <= servico.QT_SESSOES) { List <TimeSpan> horarios = new List <TimeSpan> { model.HorarioAgendamento }; if (model.QuantidadeSessao == 1 && !servico.BT_MASSAGEM) { TimeSpan horasServico = TimeSpan.FromMinutes(servico.TP_MINUTOS); if (horasServico.Hours == 1) { TimeSpan maisTrintaMinutos = model.HorarioAgendamento.Add(new TimeSpan(0, 30, 0)); DateTime proximosTrintaMinutos = model.DataAgendamento.AddTicks(maisTrintaMinutos.Ticks); TB_AGENDA proximoHorarioOcupado = context.TB_AGENDA.SingleOrDefault(x => x.DT_AGENDAMENTO == proximosTrintaMinutos); if (proximoHorarioOcupado != null) { throw new Exception(string.Format(ExceptionMessages.ProximoHorarioInvalido, proximosTrintaMinutos.ToLongTimeString(), proximosTrintaMinutos.ToLongDateString())); } horarios.Add(maisTrintaMinutos); } secao = new TB_SECOES { DS_IDENTIFICADOR = Guid.NewGuid().ToString() }; context.TB_SECOES.Add(secao); context.SaveChanges(); } else { int[] agendamentos = context.TB_AGENDA .Include(x => x.TB_CLIENTES) .Include(x => x.TB_SERVICOS) .Where(x => x.ID_CLIENTE == model.IdCliente && x.ID_SERVICO == model.IdServico) .Select(x => x.Id) .ToArray(); IEnumerable <IGrouping <string, RL_SECAO_AGENDAMENTO> > sessoes = context.RL_SECAO_AGENDAMENTO .Include(x => x.TB_SECOES) .Where(x => agendamentos.Contains(x.TB_AGENDA.Id)) .ToArray() .GroupBy(x => x.TB_SECOES.DS_IDENTIFICADOR); IEnumerable <RL_SECAO_AGENDAMENTO> rl_secao_agendamento = sessoes.Where(x => x.Count() < servico.QT_SESSOES) .FirstOrDefault(); if (rl_secao_agendamento != null && rl_secao_agendamento.Any()) { secao = rl_secao_agendamento.FirstOrDefault().TB_SECOES; } if (secao == null) { secao = new TB_SECOES { DS_IDENTIFICADOR = Guid.NewGuid().ToString() }; context.TB_SECOES.Add(secao); context.SaveChanges(); TimeSpan horasServico = TimeSpan.FromMinutes(servico.TP_MINUTOS); if (horasServico.Hours == 1 && model.QuantidadeSessao == 1) { TimeSpan maisTrintaMinutos = model.HorarioAgendamento.Add(new TimeSpan(0, 30, 0)); DateTime proximosTrintaMinutos = model.DataAgendamento.AddTicks(maisTrintaMinutos.Ticks); TB_AGENDA proximoHorarioOcupado = context.TB_AGENDA.SingleOrDefault(x => x.DT_AGENDAMENTO == proximosTrintaMinutos); if (proximoHorarioOcupado != null) { throw new Exception(string.Format(ExceptionMessages.ProximoHorarioInvalido, proximosTrintaMinutos.ToLongTimeString(), proximosTrintaMinutos.ToLongDateString())); } horarios.Add(maisTrintaMinutos); } } else { model.QuantidadeSessao = servico.QT_SESSOES; } } foreach (TimeSpan horario in horarios) { DateTime dataAgendamento = model.DataAgendamento.AddTicks(horario.Ticks); TB_AGENDA agendamento = new TB_AGENDA { DT_AGENDAMENTO = dataAgendamento, DT_CRIACAO = DateTime.Now, ID_CLIENTE = model.IdCliente, ID_SERVICO = model.IdServico, QT_SESSOES_AGENDAMENTO = model.QuantidadeSessao }; context.TB_AGENDA.Add(agendamento); RL_SECAO_AGENDAMENTO secaoAgendamento = new RL_SECAO_AGENDAMENTO { ID_AGENDAMENTO = agendamento.Id, ID_SECAO = secao.Id }; context.RL_SECAO_AGENDAMENTO.Add(secaoAgendamento); context.SaveChanges(); } } else { throw new Exception(string.Format(ExceptionMessages.QuantidadeDeSessoesNaoPermitida, servico.QT_SESSOES)); } }