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); }
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()); }
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()); }
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);
private IMongoQueryable <Attendee> Query() => Meerkat.Query <Attendee>();
public async Task RemoveAttendee(string id) { var attendeeId = ObjectId.Parse(id); await Meerkat.RemoveByIdAsync <Attendee>(attendeeId); }
public Task <Event> FindByNameAndDate(string name, DateTime date) => Meerkat.FindOneAsync <Event>(x => x.Name == name && x.StartsAt == date);
public Task <Event> FindById(string eventId) => Meerkat.FindByIdAsync <Event>(ObjectId.Parse(eventId));
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); }
public Task <Admin> FindByEmail(string email) { var normalizedEmail = email?.ToLowerInvariant(); return(Meerkat.FindOneAsync <Admin>(x => x.EmailAddress == normalizedEmail)); }
public Task <Admin> FindById(string adminId) => Meerkat.FindByIdAsync <Admin>(ObjectId.Parse(adminId));
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));
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();
public Task <Person> GetByPhone(string phoneNumber) { phoneNumber = phoneNumber?.Regularize().Trim(); return(Meerkat.FindOneAsync <Person>(x => x.Phone == phoneNumber)); }