Ejemplo n.º 1
0
    public static void SeedDefaults()
    {
        EnvReader.TryGetStringValue("DEFAULT_ADMIN_EMAIL", out var adminEmail);
        EnvReader.TryGetStringValue("DEFAULT_ADMIN_PASS", out var adminPass);

        if (string.IsNullOrWhiteSpace(adminEmail) || string.IsNullOrWhiteSpace(adminPass))
        {
            Console.WriteLine("Either the default admin email address or password is not provided. Skipping...");
            return;
        }

        var adminExists = Meerkat.Query <Admin>()
                          .Any(x => x.EmailAddress == adminEmail);

        if (adminExists)
        {
            Console.WriteLine("A default admin already exists. Skipping...");
            return;
        }

        var admin = new Admin("Default Admin", adminEmail);

        admin.SetPassword(adminPass);
        admin.Save();
    }
    public async Task <Newcomer> UpdateNewcomer(string id, DateTime?date, string fullName, string homeAddress,
                                                string phone, string email, string birthDay, Gender?gender, string ageGroup, string commentsOrPrayers,
                                                string howYouFoundUs, MultiChoice?bornAgain, MultiChoice?becomeMember, string remarks)
    {
        var newcomerId = ObjectId.Parse(id);
        var newcomer   = await Meerkat.FindByIdAsync <Newcomer>(newcomerId);

        if (newcomer == null)
        {
            throw new NotFoundException("Newcomer not found.");
        }

        newcomer.UpdateDate(date);
        newcomer.UpdateFullName(fullName);
        newcomer.UpdateHomeAddress(homeAddress);
        newcomer.UpdatePhone(phone);
        newcomer.UpdateEmail(email);
        newcomer.UpdateBirthDay(birthDay);
        newcomer.UpdateGender(gender);
        newcomer.UpdateAgeGroup(ageGroup);
        newcomer.UpdateCommentsOrPrayers(commentsOrPrayers);
        newcomer.UpdateHowYouFoundUs(howYouFoundUs);
        newcomer.UpdateBornAgain(bornAgain);
        newcomer.UpdateBecomeMember(becomeMember);
        newcomer.UpdateRemarks(remarks);
        await newcomer.SaveAsync();

        return(newcomer);
    }
Ejemplo n.º 3
0
    public async Task <Attendee> UpdateAttendee(string id, DateTime?date, string fullName, string email, int?age,
                                                string phone, string residentialAddress, Gender?gender, bool returnedInLastTenDays,
                                                bool liveWithCovidCaregivers, bool caredForSickPerson, MultiChoice?haveCovidSymptoms, string seatAssigned,
                                                string seatType)
    {
        var attendeeId = ObjectId.Parse(id);
        var attendee   = await Meerkat.FindByIdAsync <Attendee>(attendeeId);

        if (attendee == null)
        {
            throw new NotFoundException("Attendee not found.");
        }

        attendee.UpdateDate(date);
        attendee.UpdateFullName(fullName);
        attendee.UpdatePhone(phone);
        attendee.UpdateEmail(email);
        attendee.UpdateGender(gender);
        attendee.UpdateResidentialAddress(residentialAddress);
        attendee.UpdateHaveCovidSymptoms(haveCovidSymptoms);
        attendee.UpdateAge(age);
        attendee.UpdateReturnedInLastTenDays(returnedInLastTenDays);
        attendee.UpdateLiveWithCovidCaregivers(liveWithCovidCaregivers);
        attendee.UpdateCaredForSickPerson(caredForSickPerson);
        attendee.UpdateSeatAssigned(seatAssigned);
        attendee.UpdateSeatType(seatType);
        await attendee.SaveAsync();

        return(attendee);
    }
    public Task <List <Newcomer> > GetNewcomers(DateTime date)
    {
        var dayStart = date.StartOf(DateTimeAnchor.Day);
        var dayEnd   = date.EndOf(DateTimeAnchor.Day);

        return(Meerkat.Query <Newcomer>()
               .Where(x => x.Date >= dayStart && x.Date < dayEnd)
               .ToListAsync());
    }
    public async Task <Dictionary <string, Venue> > FindAndMapById(IEnumerable <string> venueIds)
    {
        var ids    = venueIds.Select(x => (object)ObjectId.Parse(x));
        var venues = await Meerkat.Query <Venue>()
                     .Where(x => ids.Contains(x.Id))
                     .ToListAsync();

        return(venues.ToDictionary(x => x.Id.ToString(), y => y));
    }
 public static void ConfigureInjection(this IServiceCollection services)
 {
     Meerkat.Connect(Config.DbUrl);
     services.AddHttpClient();
     services.AddScoped <IEmailService, MailgunService>();
     services.AddScoped <IVenueRepository, VenueRepository>();
     services.AddScoped <IEventRepository, EventRepository>();
     services.AddScoped <IAdminsRepository, AdminsRepository>();
     services.AddScoped <IPersonsRepository, PersonsRepository>();
     services.AddScoped <INewcomersRepository, NewcomersRepository>();
     services.AddScoped <IAttendanceRepository, AttendanceRepository>();
 }
 public Task <List <DateSummaryDto> > GetNewcomersDates()
 {
     return(Meerkat.Query <Newcomer>()
            .GroupBy(x => x.Date)
            .Select(x => new DateSummaryDto
     {
         Date = x.Key,
         NumOfEntries = x.Count()
     })
            .OrderByDescending(x => x.Date)
            .ToListAsync());
 }
Ejemplo n.º 8
0
    public Task <List <Person> > GetAll(string name = null)
    {
        var queryable = Meerkat.Query <Person>();

        if (!string.IsNullOrWhiteSpace(name))
        {
            var filter = Builders <Person> .Filter.Or(
                new FilterDefinitionBuilder <Person>().Regex(x => x.FirstName,
                                                             new BsonRegularExpression($"^{Regex.Escape(name)}", "i")),
                new FilterDefinitionBuilder <Person>().Regex(x => x.LastName,
                                                             new BsonRegularExpression($"^{Regex.Escape(name)}", "i"))
                );

            queryable = queryable.Where(_ => filter.Inject());
        }

        return(queryable.ToListAsync());
    }
Ejemplo n.º 9
0
    public async Task <Attendee> AddAttendee(string id, string seatNumber, string seatType)
    {
        var today    = DateTime.UtcNow.Date;
        var personId = ObjectId.Parse(id);
        var person   = await Meerkat.FindByIdAsync <Person>(personId);

        if (person == null)
        {
            throw new NotFoundException("User not pre-registered.");
        }

        var attendee = await Query()
                       .FirstOrDefaultAsync(x => x.Phone == person.Phone && x.Date == today);

        if (attendee != null)
        {
            throw new ConflictException("Attendee is registered for today's service.");
        }

        attendee = new Attendee(person.FirstName, person.LastName, person?.Phone, seatNumber, seatType);
        await attendee.SaveAsync();

        return(attendee);
    }
 public Task <Venue> FindByName(string name) => Meerkat.FindOneAsync <Venue>(x => x.Name == name);
Ejemplo n.º 11
0
 private IMongoQueryable <Attendee> Query() => Meerkat.Query <Attendee>();
Ejemplo n.º 12
0
 public async Task RemoveAttendee(string id)
 {
     var attendeeId = ObjectId.Parse(id);
     await Meerkat.RemoveByIdAsync <Attendee>(attendeeId);
 }
Ejemplo n.º 13
0
 public Task <Event> FindByNameAndDate(string name, DateTime date) =>
 Meerkat.FindOneAsync <Event>(x => x.Name == name && x.StartsAt == date);
Ejemplo n.º 14
0
 public Task <Event> FindById(string eventId) => Meerkat.FindByIdAsync <Event>(ObjectId.Parse(eventId));
Ejemplo n.º 15
0
 public Task <List <Event> > GetAll(int skip, int limit) =>
 Meerkat.Query <Event>()
 .OrderByDescending(x => x.StartsAt)
 .Skip(skip)
 .Take(limit)
 .ToListAsync();
 public async Task RemoveNewcomer(string id)
 {
     var newcomerId = ObjectId.Parse(id);
     await Meerkat.RemoveByIdAsync <Person>(newcomerId);
 }
Ejemplo n.º 17
0
    public Task <Admin> FindByEmail(string email)
    {
        var normalizedEmail = email?.ToLowerInvariant();

        return(Meerkat.FindOneAsync <Admin>(x => x.EmailAddress == normalizedEmail));
    }
Ejemplo n.º 18
0
 public Task <Admin> FindById(string adminId) => Meerkat.FindByIdAsync <Admin>(ObjectId.Parse(adminId));
Ejemplo n.º 19
0
 public Task <List <Admin> > GetAll() => Meerkat.Query <Admin>()
 .OrderBy(x => x.Name)
 .ToListAsync();
 public Task <Venue> FindById(string venueId) => Meerkat.FindByIdAsync <Venue>(ObjectId.Parse(venueId));
Ejemplo n.º 21
0
 public Task <Person> FindById(string personId) => Meerkat.FindByIdAsync <Person>(ObjectId.Parse(personId));
 public Task <List <Venue> > GetAll() =>
 Meerkat.Query <Venue>()
 .OrderBy(x => x.Name)
 .ToListAsync();
Ejemplo n.º 23
0
 public Task <Person> GetByPhone(string phoneNumber)
 {
     phoneNumber = phoneNumber?.Regularize().Trim();
     return(Meerkat.FindOneAsync <Person>(x => x.Phone == phoneNumber));
 }