public IEnumerable <VaccinationViewModel> GetAllVaccinations()
        {
            var result = new List <VaccinationViewModel>();

            using (IDbConnection db = Connection)
            {
                var sql = db.Query <VaccinationProcedure, Patient, VaccinationPlan, VaccinationProcedure>(@"SELECT  VaccinationProcedure.Date AS Date, VaccinationProcedure.Done,
                                                                                                                    Patients.[Full name] AS FullName, VaccinationPlan.Name AS Name
                                                                                                            FROM VaccinationProcedure, Patients, VaccinationPlan
                                                                                                            WHERE VaccinationProcedure.PatientId = Patients.PatientId 
                                                                                                            AND VaccinationProcedure.VaccinationId = VaccinationPlan.VaccinationId",
                                                                                                          (procedure, patient, vac) =>
                {
                    var model = new VaccinationViewModel();

                    model.FullName    = patient.FullName;
                    model.Date        = procedure.Date;
                    model.Done        = procedure.Done;
                    model.Name        = vac.Name;
                    procedure.Patient = patient;
                    result.Add(model);

                    return(procedure);
                }, splitOn: "Date,Done,FullName,Name");

                return(result);
            }
        }
        public async Task <IActionResult> Index(int childId = 0)
        {
            _progId = childId;
            string userEmail = HttpContext.User.FindFirst("email")?.Value ?? _defaultUser;

            UserInfo userinfo = await _progenyHttpClient.GetUserInfo(userEmail);

            if (childId == 0 && userinfo.ViewChild > 0)
            {
                _progId = userinfo.ViewChild;
            }
            if (_progId == 0)
            {
                _progId = Constants.DefaultChildId;
            }

            Progeny progeny = await _progenyHttpClient.GetProgeny(_progId);

            List <UserAccess> accessList = await _progenyHttpClient.GetProgenyAccessList(_progId);

            int userAccessLevel = (int)AccessLevel.Public;

            if (accessList.Count != 0)
            {
                UserAccess userAccess = accessList.SingleOrDefault(u => u.UserId.ToUpper() == userEmail.ToUpper());
                if (userAccess != null)
                {
                    userAccessLevel = userAccess.AccessLevel;
                }
            }

            if (progeny.IsInAdminList(userEmail))
            {
                _userIsProgenyAdmin = true;
                userAccessLevel     = (int)AccessLevel.Private;
            }

            VaccinationViewModel model = new VaccinationViewModel();

            model.VaccinationList = new List <Vaccination>();
            List <Vaccination> vaccinations = await _progenyHttpClient.GetVaccinationsList(_progId, userAccessLevel); // _context.VaccinationsDb.AsNoTracking().Where(v => v.ProgenyId == _progId).ToList();

            if (vaccinations.Count != 0)
            {
                foreach (Vaccination v in vaccinations)
                {
                    if (v.AccessLevel >= userAccessLevel)
                    {
                        model.VaccinationList.Add(v);
                    }
                }
                model.VaccinationList = model.VaccinationList.OrderBy(v => v.VaccinationDate).ToList();
            }
            else
            {
                Vaccination vaccination = new Vaccination();
                vaccination.ProgenyId              = _progId;
                vaccination.VaccinationName        = "No vaccinations found.";
                vaccination.VaccinationDescription = "The vaccinations list is empty.";

                model.VaccinationList.Add(vaccination);
            }
            model.IsAdmin = _userIsProgenyAdmin;
            model.Progeny = progeny;
            return(View(model));
        }