Пример #1
0
        private static void ValidarAgendamentoAtendimentoSpecification(Atendimento atendimento1, List <Atendimento> atendimentosDia)
        {
            List <string> erros = new List <string>();

            //TODO: ADICIONAR A VERIICACAO PARA O MESMO ATENDENTE, NO TESTE ESTA ALEATORIO
            if (atendimentosDia.Any(a => a.InicioAtendimento.Date == atendimento1.InicioAtendimento.Date)) //existe no banco outro atendimento na mesma data
            {
                foreach (var item in atendimentosDia)
                {
                    //verificacao de horario inicio
                    if (item.InicioAtendimento >= atendimento1.InicioAtendimento &&
                        item.FimAtendimento <= atendimento1.InicioAtendimento &&
                        item.Ativo &&
                        item.IdStatusAtendimento == 1)    //verificar se ativo e se agendado (diferente de cancelado ou finalizado)
                    {
                        var mensagem = String.Format("Ja existe um agendamento com inicio em {0} e fim {1} para o atendente: {2}, cliente: {3}", item.InicioAtendimento, item.FimAtendimento, item.IdAtendente, item.IdCliente);
                        erros.Add(mensagem);
                    }

                    if (item.InicioAtendimento <= atendimento1.InicioAtendimento &&
                        item.FimAtendimento >= atendimento1.InicioAtendimento &&
                        item.Ativo &&
                        item.IdStatusAtendimento == 1)  //verificar se ativo e se agendado (diferente de cancelado ou finalizado)
                    {
                        var mensagem = String.Format("Ja existe um agendamento com inicio em {0} e fim {1} para o atendente: {2}, cliente: {3}", item.InicioAtendimento, item.FimAtendimento, item.IdAtendente, item.IdCliente);
                        erros.Add(mensagem);
                    }

                    //verificacao de horario finalizacao (a finalizacao do que esta tentando ser marcado esta no momento do atendimento ja marcado)
                    if (item.InicioAtendimento <= atendimento1.FimAtendimento &&
                        item.FimAtendimento >= atendimento1.FimAtendimento &&
                        item.Ativo &&
                        item.IdStatusAtendimento == 1)    //verificar se ativo e se agendado (diferente de cancelado ou finalizado)
                    {
                        var mensagem = String.Format("Ja existe um agendamento com inicio em {0} e fim {1} para o atendente: {2}, cliente: {3}", item.InicioAtendimento, item.FimAtendimento, item.IdAtendente, item.IdCliente);
                        erros.Add(mensagem);
                    }

                    if (item.InicioAtendimento == atendimento1.InicioAtendimento &&
                        item.FimAtendimento == atendimento1.FimAtendimento &&
                        item.Ativo &&
                        item.IdStatusAtendimento == 1)    //verificar se ativo e se agendado (diferente de cancelado ou finalizado)
                    {
                        var mensagem = String.Format("Ja existe um agendamento com inicio em {0} e fim {1} para o atendente: {2}, cliente: {3}", item.InicioAtendimento, item.FimAtendimento, item.IdAtendente, item.IdCliente);
                        erros.Add(mensagem);
                    }
                }
                erros.ForEach(x =>
                              Console.WriteLine(x)
                              );
            }
        }
Пример #2
0
        static void Main(string[] args)
        {
            ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            //neste metodo eu recebo a data com o horario inicial caso precise de fazer calculos
            DateTime inicioAtendimento = DateTime.Now.ChangeTime(11, 00, 00, 0);
            //Exemplo de 1° atendimento mais o 2° atendimento
            //transformar em time span

            TimeSpan        servico1      = new TimeSpan(1, 0, 0); //vem da tabela de atendimento(converter em timespan e depis em varchar quando vir da tela)
            TimeSpan        servico2      = new TimeSpan(1, 0, 0);
            List <TimeSpan> tempoServicos = new List <TimeSpan>    //cria uma lista com os tempos de cada serviço
            {
                servico1,
                servico2
            };

            TimeSpan tempoTotalAtendimento = tempoServicos.TotalTime();
            DateTime fimAtendimento1       = inicioAtendimento.Add(tempoTotalAtendimento);
            //fim do atendimento
            //DateTime fimAtendimento = inicioAtendimento.ChangeTime(tempoTotalAtendimento.Hours, tempoTotalAtendimento.Minutes, tempoTotalAtendimento.Seconds, tempoTotalAtendimento.Milliseconds);
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            //ATENDIMENTO 2
            DateTime        inicioAtendimento2 = DateTime.Now.ChangeTime(10, 00, 00, 0);
            TimeSpan        servico3           = new TimeSpan(1, 0, 0); //vem da tabela de atendimento(converter em timespan e depis em varchar quando vir da tela)
            TimeSpan        servico4           = new TimeSpan(1, 0, 0);
            List <TimeSpan> tempoServicos2     = new List <TimeSpan>    //cria uma lista com os tempos de cada serviço
            {
                servico3,
                servico4
            };
            TimeSpan tempoTotalAtendimento2 = tempoServicos2.TotalTime();
            DateTime fimAtendimento2        = inicioAtendimento2.Add(tempoTotalAtendimento2);
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            //ATENDIMENTO 3
            DateTime        inicioAtendimento3 = DateTime.Now.ChangeTime(12, 00, 00, 0);
            TimeSpan        servico5           = new TimeSpan(1, 0, 0); //vem da tabela de atendimento(converter em timespan e depis em varchar quando vir da tela)
            TimeSpan        servico6           = new TimeSpan(1, 0, 0);
            List <TimeSpan> tempoServicos3     = new List <TimeSpan>    //cria uma lista com os tempos de cada serviço
            {
                servico5,
                servico6
            };
            TimeSpan tempoTotalAtendimento3 = tempoServicos3.TotalTime();
            DateTime fimAtendimento3        = inicioAtendimento3.Add(tempoTotalAtendimento3);
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            //ATENDIMENTO 3
            DateTime        inicioAtendimento4 = DateTime.Now.ChangeTime(11, 00, 00, 0);
            TimeSpan        servico7           = new TimeSpan(1, 0, 0); //vem da tabela de atendimento(converter em timespan e depis em varchar quando vir da tela)
            TimeSpan        servico8           = new TimeSpan(1, 0, 0);
            List <TimeSpan> tempoServicos4     = new List <TimeSpan>    //cria uma lista com os tempos de cada serviço
            {
                servico7,
                servico8
            };
            TimeSpan tempoTotalAtendimento4 = tempoServicos4.TotalTime();
            DateTime fimAtendimento4        = inicioAtendimento3.Add(tempoTotalAtendimento4);

            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



            Console.WriteLine("Inicio Completo do Atendimento1: {0}", inicioAtendimento);
            Console.WriteLine("Tempo para o 1° serviço1: {0}", servico1);
            Console.WriteLine("Tempo para o 2° serviço1: {0}", servico2);
            Console.WriteLine("Fim Completo do Atendimento1: {0}", fimAtendimento1);
            Console.WriteLine("_________________________________________________");
            Console.WriteLine("Inicio Completo do Atendimento2: {0}", inicioAtendimento2);
            Console.WriteLine("Tempo para o 1° serviço2: {0}", servico3);
            Console.WriteLine("Tempo para o 2° serviço2: {0}", servico4);
            Console.WriteLine("Fim Completo do Atendimento2: {0}", fimAtendimento2);
            Console.WriteLine("_________________________________________________");
            Console.WriteLine("Inicio Completo do Atendimento3: {0}", inicioAtendimento3);
            Console.WriteLine("Tempo para o 1° serviço3: {0}", servico5);
            Console.WriteLine("Tempo para o 2° serviço3: {0}", servico6);
            Console.WriteLine("Fim Completo do Atendimento3: {0}", fimAtendimento3);

            //DateTime myDate1 = DateTime.Now;
            //myDate1 = myDate1.ChangeTime(10, 10, 10, 0);



            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            Atendimento atendimento1 = new Atendimento
            {
                IdAtendimento         = Guid.NewGuid(),
                IdCliente             = Guid.NewGuid(),
                IdAtendente           = Guid.NewGuid(),
                IdStatusAtendimento   = 1,
                IdTipoServico         = Guid.NewGuid(),
                InicioAtendimento     = inicioAtendimento,
                FimAtendimento        = fimAtendimento1,
                TempoTotalAtendimento = tempoTotalAtendimento.ToString(),
                Ativo = true
            };

            Atendimento atendimento2 = new Atendimento
            {
                IdAtendimento         = Guid.NewGuid(),
                IdCliente             = Guid.NewGuid(),
                IdAtendente           = Guid.NewGuid(),
                IdStatusAtendimento   = 1,
                IdTipoServico         = Guid.NewGuid(),
                InicioAtendimento     = inicioAtendimento2,
                FimAtendimento        = fimAtendimento2,
                TempoTotalAtendimento = tempoTotalAtendimento2.ToString(),
                Ativo = true
            };

            Atendimento atendimento3 = new Atendimento
            {
                IdAtendimento         = Guid.NewGuid(),
                IdCliente             = Guid.NewGuid(),
                IdAtendente           = Guid.NewGuid(),
                IdStatusAtendimento   = 1,
                IdTipoServico         = Guid.NewGuid(),
                InicioAtendimento     = inicioAtendimento3,
                FimAtendimento        = fimAtendimento3,
                TempoTotalAtendimento = tempoTotalAtendimento3.ToString(),
                Ativo = true
            };

            Atendimento atendimento4 = new Atendimento
            {
                IdAtendimento         = Guid.NewGuid(),
                IdCliente             = Guid.NewGuid(),
                IdAtendente           = Guid.NewGuid(),
                IdStatusAtendimento   = 1,
                IdTipoServico         = Guid.NewGuid(),
                InicioAtendimento     = inicioAtendimento4,
                FimAtendimento        = fimAtendimento4,
                TempoTotalAtendimento = tempoTotalAtendimento4.ToString(),
                Ativo = true
            };

            List <Atendimento> atendimentosDiaa = new List <Atendimento>
            {
                atendimento2,
                atendimento3,
                atendimento4
            };

            ValidarAgendamentoAtendimentoSpecification(atendimento1, atendimentosDiaa);

            //o atendimento 2 serao os atendimentos buscados no banco na mesma data


            Console.ReadLine();

            /*
             * CAMPOS COMPLETOS DA AGENDA:
             * inicioAtendimento (datetime + hora)
             * fimAtendimento (datetime + hora)
             * tempoTotalAtendimento (varchar9)
             */
        }