public IActionResult SalvarAgendamentoItem([FromBody] SalvarAgendamentoItemRequest salvarAgendamentoRequest) { var servicos = this.CriarServicos(); var model = new AgendamentoItemDTO(); model.CodAgendamento = salvarAgendamentoRequest.CodAgendamentoItem; model.CodCliente = 0; model.CodServico = salvarAgendamentoRequest.CodAgendamentoItem; model.CodProfissional = 0; model.Inicio = salvarAgendamentoRequest.HoraInicio; model.Termino = salvarAgendamentoRequest.HoraTermino; if (servicos.AgendamentosServico.SalvarAgendamentoItem(model) > 0) { return(NoContent()); } return(BadRequest("Não foi possível salvar o agendamento")); }
public int SalvarAgendamentoItem(AgendamentoItemDTO agendamento) { return(this.repositorio.AgendamentosRepositorio.SalvarAgendamento(agendamento.ToAgendamento())); }
private void ValidaAgendamento(AgendamentoItemDTO agendamentoItem) { var valido = true; var conf = this.ObterConfiguracoes(); List <AgendamentoItem> hist; var agOld = this.repositorio.AgendamentosRepositorio .ConsultarAgendamento(agendamentoItem.CodAgendamento); if (agOld != null && agOld.Cd_Status == 3) { throw new ServicosException("Não é permitido alterar um agendamento Realizado"); } var conflitaAlmoco = false; var foraDeHorario = false; var inicioAlmoco = agendamentoItem.Inicio.Date + TimeSpan.Parse(conf.AlmocInicio); var fimAlmoco = agendamentoItem.Inicio.Date + TimeSpan.Parse(conf.AlmocFinal); var inicioExpediente = agendamentoItem.Inicio.Date + TimeSpan.Parse(conf.FuncInicio); var fimExpediente = agendamentoItem.Inicio.Date + TimeSpan.Parse(conf.FuncFinal); if (conf != null) { foraDeHorario = agendamentoItem.Inicio < inicioExpediente; foraDeHorario = foraDeHorario || agendamentoItem.Termino > fimExpediente; if (conf.BloqAlmoco == 1) { conflitaAlmoco = inicioAlmoco >= agendamentoItem.Inicio && inicioAlmoco < agendamentoItem.Termino; conflitaAlmoco = conflitaAlmoco || (fimAlmoco > agendamentoItem.Inicio && fimAlmoco <= agendamentoItem.Termino); conflitaAlmoco = conflitaAlmoco || (inicioAlmoco <agendamentoItem.Inicio && fimAlmoco> agendamentoItem.Termino); } } if (foraDeHorario) { throw new ServicosException("Agendamento fora do horário permitido"); } if (conflitaAlmoco) { throw new ServicosException("Não é permitido agendar durante o horário de almoço"); } if (agendamentoItem.CodAgendamentoItem == 0) { hist = this.repositorio.AgendamentosRepositorio.ListarAgendamentosItens(a => a.Dat_Inicio >= agendamentoItem.Inicio && a.Dat_Inicio <= agendamentoItem.Termino && a.Cd_Profissional == agendamentoItem.CodProfissional && agendamentoItem.CodCliente != a.Agendamento.Cd_Cliente); valido &= hist == null || hist.Count == 0; hist = this.repositorio.AgendamentosRepositorio.ListarAgendamentosItens(a => a.Dat_Termino > agendamentoItem.Inicio && a.Dat_Termino <= agendamentoItem.Termino && a.Cd_Profissional == agendamentoItem.CodProfissional && agendamentoItem.CodCliente != a.Agendamento.Cd_Cliente); valido &= hist == null || hist.Count == 0; hist = this.repositorio.AgendamentosRepositorio.ListarAgendamentosItens(a => a.Dat_Inicio <agendamentoItem.Inicio && a.Dat_Termino> agendamentoItem.Termino && a.Cd_Profissional == agendamentoItem.CodProfissional && agendamentoItem.CodCliente != a.Agendamento.Cd_Cliente); valido &= hist == null || hist.Count == 0; } else { hist = this.repositorio.AgendamentosRepositorio.ListarAgendamentosItens(a => a.Dat_Inicio >= agendamentoItem.Inicio && a.Dat_Inicio <= agendamentoItem.Termino && a.Cd_Profissional == agendamentoItem.CodProfissional && agendamentoItem.CodCliente != a.Agendamento.Cd_Cliente && a.Cd_AgendamentoItem != agendamentoItem.CodAgendamentoItem); valido &= hist == null || hist.Count == 0; hist = this.repositorio.AgendamentosRepositorio.ListarAgendamentosItens(a => a.Dat_Termino > agendamentoItem.Inicio && a.Dat_Termino <= agendamentoItem.Termino && a.Cd_Profissional == agendamentoItem.CodProfissional && agendamentoItem.CodCliente != a.Agendamento.Cd_Cliente && a.Cd_AgendamentoItem != agendamentoItem.CodAgendamentoItem); valido &= hist == null || hist.Count == 0; hist = this.repositorio.AgendamentosRepositorio.ListarAgendamentosItens(a => a.Dat_Inicio <agendamentoItem.Inicio && a.Dat_Termino> agendamentoItem.Termino && a.Cd_Profissional == agendamentoItem.CodProfissional && agendamentoItem.CodCliente != a.Agendamento.Cd_Cliente && a.Cd_AgendamentoItem != agendamentoItem.CodAgendamentoItem); valido &= hist == null || hist.Count == 0; } if (!valido) { var nome = this.repositorio.PessoasRepositorio.Obter(agendamentoItem.CodProfissional)?.Txt_Nome ?? "profissional não identificado"; nome = nome.Split(" ")[0]; throw new AgendamentoConflitoException(nome + " não está disponível no horário " + agendamentoItem.horarioLabel); } if (agendamentoItem.Observacao.Length > 2000) { throw new ServicosException("Observação não pode ultrapassar 2000 caracteres"); } if (agendamentoItem.CodStatus != 3) { if (agOld != null && agOld.Cd_Status == 3) { throw new ReAbrirAgendamentoException("Agendamento já foi realizado e não pode ser reaberto"); } } if (agendamentoItem.CodAgendamentoItem > 0 && agOld.Cd_Cliente != agendamentoItem.CodCliente) { throw new ServicosException("Não é permitido alterar o cliente de um agendamento existente"); } }