public async Task <IHttpActionResult> GenerateGuestCode([FromBody] GuestCodeRequest codeRequest)
        {
            var guestCode = new GuestCode();

            guestCode.GuestCode1 = GuestCodeGenerator.RandomString(6);
            guestCode.UseLimit   = codeRequest.UseCount ?? 1;

            if (codeRequest.GuestId != null)
            {
                Guest guest = await db.Guests.FindAsync(codeRequest.GuestId);

                if (guest == null)
                {
                    return(NotFound());
                }

                guestCode.GuestId  = guest.GuestId;
                guestCode.UseLimit = codeRequest.GuestId ?? guest.MaxAllowed;
            }

            db.GuestCodes.Add(guestCode);

            await db.SaveChangesAsync();

            db.Entry(guestCode).State = EntityState.Detached;

            return(Ok(guestCode));
        }
        public async Task <IHttpActionResult> GenerateAllGuestCodes()
        {
            IEnumerable <Guest> guests = db.Guests.AsNoTracking().ToList();

            foreach (Guest guest in guests)
            {
                if (!db.GuestCodes.Any(gc => gc.GuestId == guest.GuestId))
                {
                    var guestCode = new GuestCode();
                    guestCode.GuestCode1 = GuestCodeGenerator.RandomString(6);
                    guestCode.GuestId    = guest.GuestId;
                    guestCode.UseLimit   = guest.MaxAllowed;
                    guestCode.GuestId    = guest.GuestId;

                    db.GuestCodes.Add(guestCode);

                    await db.SaveChangesAsync();
                }
            }

            return(Ok());
        }