예제 #1
0
        public Response OrganizeSecondStage()
        {
            Response response = new Response();

            int half;
            int totalSpaces = 0;
            //Pelo menos metade das pessoas de cada sala deve trocar de sala, para estimular a troca de informações

            //pegar quantidade total de salas de treinamento e colocar em uma listSpaces
            SpaceTrainingBLL spaceBLL                = new SpaceTrainingBLL();
            QueryResponse <SpaceTraining> r1         = spaceBLL.GetAllList();
            List <SpaceTraining>          listSpaces = r1.Data;

            if (listSpaces.Count > 0)
            {
                //foreach que percorre a listSpaces
                foreach (SpaceTraining spaceNow in listSpaces)
                {
                    //atualizar quantidade de salas
                    totalSpaces++;

                    //pegar a lista de pessoas que foi destinada a fazer a primeira etapa nesta sala e colocar em uma listPersons
                    QueryResponse <Person> r2          = this.GetPeopleByStage1ID(spaceNow);
                    List <Person>          listPersons = r2.Data;

                    //contar quantas pessoas tem na listPersons
                    Response r3 = listPersons.Count.ToString().IsPair();

                    //se for par
                    if (r3.Success)
                    {
                        //definir metade de pessoas a serem excluidas da lista, o que restar será trocada de sala
                        half = (listPersons.Count / 2);
                    }
                    //se for ímpar
                    else
                    {
                        //definir metade acrescentando +1 e divindo por 2, assim não teremos número quebrado e estarei trocando pelo menos metade da sala
                        half = (listPersons.Count - 1) / 2;
                    }

                    //excluir um total de half da listPersons, o que sobrar receberá o novo ID da etapa 2
                    for (int i = 1; i <= half; i++)
                    {
                        foreach (Person p in listPersons)
                        {
                            listPersons.Remove(p);
                            break;
                        }
                    }

                    //verificar se existe uma próxima sala depois desta
                    if (totalSpaces < listSpaces.Count)
                    {
                        //se cair aqui, existe outra sala depois desta, fazer foreach que percorre a newListPerson e inserir no STAGE2ID: spaceNow.ID + 1
                        foreach (Person p in listPersons.ToList())
                        {
                            int newID = spaceNow.ID + 1;
                            //chamar método que insere o ID no STAGE2ID informando newID
                            Response r4 = personDAL.UpdateStage2IDInformingInt(newID, p);
                            listPersons.Remove(p);
                        }
                    }
                    else
                    {
                        //se cair aqui, esta é a última sala existente, inserir ID da primeira sala da listSpace
                        //fazer foreach que percorrerá a primeira sala da listSpace para pegar o ID dela, e depois disso deverá sair do foreach, pois eu quero apenas a primeira sala
                        foreach (SpaceTraining firstSpace in listSpaces)
                        {
                            foreach (Person p in listPersons.ToList())
                            {
                                int      newID = firstSpace.ID;
                                Response r5    = personDAL.UpdateStage2IDInformingInt(newID, p);
                                listPersons.Remove(p);
                            }
                            break;
                        }
                    }
                }

                response.Success = true;
                response.Message = "Dados inseridos com sucesso.";
                return(response);
            }
            else
            {
                response.Success = false;
                response.Message = "Não existem salas cadastradas.";
                return(response);
            }
        }
예제 #2
0
        public Response OrganizeFirstStage()
        {
            Response response = new Response();

            // aqui está a distribuição de pessoas nas salas para primeira etapa

            SpaceTrainingBLL spaceBLL = new SpaceTrainingBLL();

            //lista de todas as pessoas
            QueryResponse <Person> r3          = this.GetAllList();
            List <Person>          listPersons = r3.Data;

            if (listPersons.Count > 0)
            {
                //lista e contagem de todas as salas de treinamento
                QueryResponse <SpaceTraining> r4         = spaceBLL.GetAllList();
                List <SpaceTraining>          listSpaces = r4.Data;

                if (listSpaces.Count > 0)
                {
                    // >>>> executa a partir de agora distribuição de pessoas para etapa 1

                    foreach (SpaceTraining s in listSpaces)
                    {
                        //pegar capacidade total desta sala maxCapacity
                        SingleResponse <SpaceTraining> r0 = spaceBLL.Get(s);
                        int final = r0.Data.MaxCapacity;

                        for (int i = 1; i <= final; i++)
                        {
                            foreach (Person p in listPersons)
                            {
                                Response r5 = this.UpdateStage1ID(s, p);
                                Response r6 = this.UpdateStage2ID(s, p);
                                listPersons.Remove(p);
                                break;
                            }
                            if (listPersons.Count == 0)
                            {
                                break;
                            }
                        }
                        if (listSpaces.Count == 0)
                        {
                            break;
                        }
                    }

                    response.Success = true;
                    response.Message = "Dados inseridos com sucesso.";
                    return(response);
                }
                else
                {
                    response.Success = false;
                    response.Message = "Não há salas cacastradas.";
                    return(response);
                }
            }
            else
            {
                response.Success = false;
                response.Message = "Não há pessoas cadastradas.";
                return(response);
            }
        }