/// <summary>
        /// Inicializa as propriedades.
        /// </summary>
        public TestSupport()
        {
            _createdBaseForm = new List<BaseForm>();
            _createdPeriods = new List<Period>();
            _createdResponseForm = new List<ResponseForm>();
            _createdUser = new List<User>();
            _createdSubmit = new List<Submit>();

            //Cria o usuário Master
            createMasterUser();

            BaseFormRepository = new BaseFormRepository(activeUser);
            PeriodRepository = new PeriodRepository(activeUser);
            ResponseFormRepository = new ResponseFormRepository(activeUser);
            UserRepository = new UserRepository(activeUser);
            SubmitRepository = new SubmitRepository(activeUser);
        }
        private void createMasterUser()
        {
            using (Lib.Repositories.UserRepository rep = new UserRepository(null))
            {
                Lib.Entities.User masterUser = new User();
                masterUser.Login = "******";
                masterUser.Name = "testeMaster";
                masterUser.Password = "******";
                masterUser.UserType = (int)Lib.Enumerations.UserType.Master;
                masterUser.Email = "*****@*****.**";

                rep.createUserMaster(masterUser);

                _createdUser.Add(masterUser);
                activeUser = masterUser;
            }
        }
        public List<ResponseForm> getResponseFormsByUserId(long userId, bool collabForms = false)
        {
            try
            {
                List<ResponseForm> responseForms = new List<ResponseForm>();
                //Recupera os grupos
                User user = null;
                using (Lib.Repositories.UserRepository repUser = new UserRepository(this.ActiveUser))
                {
                    user = repUser.getInstanceById(userId);
                }

                //Buscando os questionários que o usuário preencheu
                responseForms.AddRange(context.ResponseForms
                    .Include("BaseForm")
                    .Include("BaseForm.Period")
                    .Include("Answers")
                    .Include("City")
                    .Include("City.State")
                    .Include("User")
                    .Include("Submits")
                    .Where(b => b.UserId == userId).ToList());

                //Buscando os formulários que a entidade é colaboradora
                //Para cada grupo que o usuário é colaborador, busca os questionários do periodo e usuário responsável preencheu
                foreach (var group in user.Groups)
                {
                    var forms = context.ResponseForms
                        .Include("BaseForm")
                        .Include("BaseForm.Period")
                        .Include("Answers")
                        .Include("City")
                        .Include("City.State")
                        .Include("User")
                        .Include("Submits")
                        .Where(b => b.UserId == group.ResponsableId && b.BaseForm.PeriodId == group.PeriodId && (b.CityId == group.CityId || b.CityId == null)).ToList();

                    forms.ForEach(f =>
                    {
                        if (!responseForms.Select(c => c.Id).ToList().Contains(f.Id))
                        {
                            responseForms.Add(f);
                        }
                    });
                }

                responseForms.ForEach(responseForm =>
                {
                    responseForm.Reviews = context.Reviews.Where(r => r.ResponseFormId == responseForm.Id).ToList();

                    responseForm.Reviews.ForEach(r =>
                    {
                        r.User = context.Users.Where(f => f.Id == r.UserId).FirstOrDefault();
                    });

                    //carrega os baseblocks
                    responseForm.BaseForm.BaseBlocks = context.BaseBlocks.Where(bb => bb.BaseFormId == responseForm.BaseFormId).ToList();

                    responseForm.BaseForm.BaseBlocks.ForEach(bb =>
                    {
                        //carrega os basesubblocks
                        bb.BaseSubBlocks = context.BaseSubBlocks.Where(f => f.BaseBlockId == bb.Id).ToList();

                        bb.BaseSubBlocks.ForEach(bsb =>
                        {
                            //carrega os basequestions
                            bsb.BaseQuestions = context.BaseQuestions.Where(bq => bq.BaseSubBlockId == bsb.Id).ToList();
                        });
                    });

                    responseForm.Answers = responseForm.Answers.OrderBy(ans => ans.BaseQuestion.BaseSubBlock.Index).ToList();
                });

                return responseForms;
            }
            catch (Exception ex)
            {
                Log.ErrorLog.saveError("Lib.Repositories.ResponseFormRepository.getAll", ex);
                throw new Exception("Lib.Repositories.ResponseFormRepository.getAll - " + ex.Message, ex);
            }
        }