private static async Task <TrackerResponse> CalendarByDistrict(string districtID)
        {
            // Create availableSessions List which will hold the results
            List <AvailableSession> availableSessions = new List <AvailableSession>();
            int availableCount     = 0;
            int availableLt45Count = 0;

            //Call the calendarByDistrict api
            var streamTask = Client.GetStreamAsync(
                "https://cdn-api.co-vin.in/api/v2/appointment/sessions/calendarByDistrict?" +
                "district_id=" + districtID +
                "&date=" + DateTime.Now.ToString("dd-MM-yyyy"));

            var availableCenters = await JsonSerializer.DeserializeAsync <CalendarByDistrictResponse>(await streamTask);

            foreach (var center in availableCenters.Centers)
            {
                foreach (var session in center.Sessions)
                {
                    if (session.Available_capacity != 0)
                    {
                        availableCount++;
                        if (session.Min_age_limit < 45)
                        {
                            availableLt45Count++;
                        }

                        availableSessions.Add(new AvailableSession
                        {
                            Name = center.Name,
                            Available_capacity = session.Available_capacity,
                            Min_age_limit      = session.Min_age_limit,
                        });
                    }
                }
            }

            TrackerResponse result = new TrackerResponse()
            {
                AvailableCount          = availableCount,
                AvailableCountCountLt45 = availableLt45Count,
                AvailableSessions       = availableSessions
            };

            return(result);
        }
        private static async Task Main(string[] args)
        {
            if (args.Length == 1 && HelpRequired(args[0]))
            {
                DisplayHelp();
            }
            else
            {
                if (args.Length != 4)
                {
                    Console.WriteLine("Insufficient arguments...");
                    DisplayHelp();
                    Environment.Exit(0);
                }

                Console.WriteLine("Checking available slots...");

                Client.DefaultRequestHeaders.Accept.Clear();
                Client.DefaultRequestHeaders.Accept.Add(
                    new MediaTypeWithQualityHeaderValue("application/json"));

                // District ID comes from the command line argument
                TrackerResponse trackerResponse = await CalendarByDistrict(args[0]);

                if (trackerResponse.AvailableCount != 0)
                {
                    string mailContent = $"Available slots: {trackerResponse.AvailableCount} | Available slots for Age < 45: {trackerResponse.AvailableCountCountLt45} <br> <br> {Environment.NewLine}";
                    foreach (AvailableSession session in trackerResponse.AvailableSessions)
                    {
                        mailContent += $"Name: {session.Name} | Available capacity: {session.Available_capacity} | Min age limit: {session.Min_age_limit} <br> {Environment.NewLine}";
                    }
                    Console.WriteLine(mailContent);

                    await NotifyUser(args[1], args[2], args[3], mailContent);
                }
                else
                {
                    Console.WriteLine("No available slots.");
                }
            }
        }