Esempio n. 1
0
        public async Task <IActionResult> Admin(long filterVariantId, CancellationToken cancel)
        {
            var model = new List <RegistrationModel>();

            var registrations = filterVariantId != 0
                ? await _registrationService.GetAsync(filterVariantId, cancel)
                : await _registrationService.GetAsync(cancel);

            foreach (var registration in registrations)
            {
                var registrationModel = new RegistrationModel()
                {
                    FirstName  = registration.FirstName,
                    SecondName = registration.SecondName,
                    Phone      = registration.Phone,
                    BirthDate  = registration.BirthDate,
                    Questions  = new List <QuestionModel>()
                };

                var variantIdList = registration.Answers
                                    .Select(d => d.VariantId)
                                    .ToList();

                foreach (var variantId in variantIdList)
                {
                    var dbVariant = await _variantService.GetAsync(variantId, cancel);

                    var dbQuestion = await _questionService.GetAsync(dbVariant.QuestionId, cancel);

                    var questionModel = registrationModel.Questions.FirstOrDefault(q => q.Id == dbQuestion.Id);
                    if (questionModel == null)
                    {
                        questionModel = new QuestionModel()
                        {
                            Id       = dbQuestion.Id,
                            Name     = dbQuestion.Name,
                            Variants = new List <VariantModel>()
                        };

                        registrationModel.Questions.Add(questionModel);
                    }

                    questionModel.Variants.Add(new VariantModel()
                    {
                        Id   = dbVariant.Id,
                        Name = dbVariant.Name
                    });
                }

                model.Add(registrationModel);
            }

            return(View(model));
        }