To Do: All (Pending)

Priority Project #
1 ATS Template #: 1
1.00

Services consolidation

  • Does it make sense to consolidate all the ImportServices into a single one?
  • And the Count Services into a single Service?
  • Does it make sense to rename the Services with a ATS prefix?
- Pending
1.02

Live server set up

  • Automate the process to give read/write access to the public/administration
    • sudo chmod -R 775 /var/www/html/stephennurse/public/administration/Attachments/
    • sudo chown -R www-data:www-data /var/www/html/stephennurse/public/administration/Attachments/
  • Write a batch file that will copy the Map-Icon and Language-Icon files,  to all the projects (or have them uploaded in the git process)

CMS Copy/Format

  • I have placeholder field in all the CMS_Copy records called CMS_Format.  It includes the different tricks to format the page (Accordian etc).   
  • Can you wire them up and make them work so we can have a different formatted page?

Security

  • Email verification for New users

 

Roles entity

  • Create a ranking of roles
  • See if you can mimic the heirachy. 
    • ie Create a list of other roles that are granted by association. 

User-roles

  • Consider how to handle the nesting (ie heirachy)
    • Should you save the other roles upon exit?
- Pending
1.04

Tech Set Up Between Muhammad & Steve

  • It would be great if we could find a screen share solution that shares 2 screens and doesn't fall off connections as frequently as Chrome Remote Desktop
Pending
2 AX Tools #: 12
2.01

Confirmation emails and clients amending bookings themselves

  • The idea is that it would be nice if clients could edit/correct some details in their booking directly.
  • In my old company clients had to call or email in to make ANY changes to their booking,  but it would be much more efficient if they could amend bookings themselves 
  • However, we can't let them make changes (without us ok'ing them) if they critically change the program for the driver after it is too late.
  • The key concept is that clients shouldn't be able to amend things that mess up the day (if they make last minute changes).  So they can't change the destination or number of passengers (beyond the capacity of the car), or times at the last minute
  • Issue is security - how do we give non-login access to edit a booking without exposing the database? Do we add a specific link to a page that is not login protected that allows changes, and only works for some fields with 24hours notice?  
    • At ANY time (even last minute) they should be able to:
      • Add/correct phone numbers or emails
      • Additional passengers names/details
      • Add address within the resort/cities
      • Reduce baby/child seats (not increase)
      • Change passenger numbers so long as it doesn't change the price (ie the vehicle)
      • Add flights number so long as it doesn't change the time  (probably not allow that change)
    • With more than [36] hours they should be able to change things that make a difference to the driver's program (eg destinations, dates, add trips)
  • Think about the best approach for this. 
    • Give them a unique page  (and include a password on their email?)
    • Do it by buttons?
    • What do you think?

 

Ideas

  • Clients can have a secure webpage (similar to the autologin) to shows each booking/transfer with the ability to edit some fields
    • Security code that times out. 
  • Client acceptance - Give a code to clients to accept the transfer. 
  • Whatsapp message to clients the night before.   Link to summary of transfer (not user protected)
Pending
2.02

Driver's page 

  • The driver's schedule should detail THEIR trips for the day and allow them to move forward/back to future days. 
    • Background colours to represent past, tomorrow, today, future 
  • Links to helpful notes.
  • Launch the “Meet & Greet” page for airport/train pickups with the client details/affiliate logo
  • Buttons to register events
    • Non-transfer
      • Driver wake-up / Awake
      • Left home
    • Transfer specific
      • At pickup (including GPS location)
      • ‘Found client’
      • Leaving now
      • Arrived
      • WhatsApps/emails to clients
  •  Essential that this page is optimised for mobile.  Should also be the login-direction for users that are Drivers
Pending
2.03

Private + bookings

  • We should create a page showing the Private+ bookings that can be seen externally. 
  • Recap: A Private+ booking is one that the original client (first) has opted to allow others to travel with them, to share the cost, so long as the times and destinations work.
  • The criteria are:
    • Drop-off to an airport - they have to be on flights that leave within [20 - controllable in settings] mins of each other and departing from the same Destination (eg Verbier)
    • Pickup at an airport -  they have to be on the exact same flight…. and obviously going to the same ‘Destination’ (eg Verbier, Chamonix etc)
      • FYI, the 20min rule doesn't apply for pickup at the airport as 1 flight might be early/later and the waiting period could easily extend from 20mins to hours. But for dropoffs that doesn't apply (as we don't know about delayed flights until too late to influence the taxi journey)
  • So, the page should reflect that:
    • Date
    • Seats taken
    • Seats left (assume 7 seats in the car)
    • Pickup (from(
      • If airport, then flight number
    • Drop-Off (to)
      • Don't show the address (eg Ch de la Tinte, 5), but show ‘Verbier’
    • Price for 1,2,3… people  
      • We will work on the formula for that.
- Pending
2.04

“Shared” Private Transfers

  • Create a view of all Private transfers where the IsShared = true, sorted by Departure Destination and Arrival Destination and a flag if there is a match 
    • Match is when…
      • Date, and To/From destination (city) is the same
      • For pickups at the Airport or Train, that all customers on the same flight/train
      • For dropoff at the Airport/Train, that the train/flight time are within [10] minutes of each other  (where the 10 is controllable in Settings - but hard code for now)
      • That the total pax combined is <8
  • We should think about if we can automate the matching and we should publish the possible matches on our public website
- Pending
2.05

Client site (public pages)

  • The “Book Now” page on the public site collect a basic booking (One-way or Return to the same routes -  ie only 1 or 2 journeys, same combinations).   
    • The backend can be used for more complex ones.
    • Unlike a backend booking, we should sequence the collection of data….  ie the client wants to know prices and options first, before typing in their details and payment details. 
  • This site does it brilliantly:  https://www.mountaindropoffs.com.  
    • Please try making a fake booking (don't save anything, just click out before payment - they are nice people) their site.  
    • It is amazing and super well thought out site. Best in the business. 
  • This is what you will see.  All on one page but with tabs to make it quick 
    • Step 1 is picking the dates and destinations
      • Number of pax
      • Destination list
        • Nice details: Return date can't be before Outbound date
        • Second journey defaults to the reverse of First journey
          • Dates remembered if you unclick Return and back again
    • Step 2 is flight data or address and then the service type/price
      • If airport: flight
      • if non airport:  Address
        • Then picking the Shared/Private/Private+ with price 
    • Step 3 is collecting contact details, names/emails/telephone/babies etc and luggage
      • Nice way to get international codes
      • Look at the extras (babies, luggage)
    • Step 4 payment
  • The design of this is 100% optimal (the owner is very experienced and logical) and we did exactly the same, but my old site has been changed so I can't show you that

 

Now all of this is the same as the booking entity and the (1 or 2) transfers in that booking.  Make senses?

 

 

Pending
2.06

Client phone numbers

  • Including details of the tel number (country code, PhoneAnalyser - confirm if the number is “verified”) 
- Pending
2.07

Background/rational

  • Taxi companies and individual taxi drivers all share the same software and I will be able to see across the various competing taxi drivers and re-allocate trips or new trips to whoever is best placed to offer them.
    • In truth this is to match drivers who are going back empty with a customer who needs taking
    • Do you think this makes sense that there are [20-50] taxidrivers sharing the same database -or should i clone it?
  • Offer each taxi driver their ‘own’ website, so they can give their clients that site and book trips there themselves  (as an incentive to use the system). Assume there are 50 ‘individual’ taxi drivers. 
    • Can I control 50 x CMS (CMS_Copy and CMS_Photo and Product) inputs centrally (ie each CMS page would need to be linked to a taxi driver)
    • Can I point their own URL to my code (eg. www.johnstaxi.com) but where all the bookings go to AXTools?
    • So in each Partner company I would include their URL link if they are adopting my system
    • I think it is ok for ‘their’ link to use the same URL if that is impossible
  • Intro fee for referrals
  • New drivers sign up and need to send bank details, driving license and car details
    • Automate the on-boarding email - in English and French
  • Driver's location is tracked in their response
    • Can we do this via the website or do we need an IOS/Android app?
  • For all bookings the driver's time at location is tracked to prove they were on time and to whatsapp the customer
Pending
2.08

Accommodation

  • Ability for the user to add a new address
  • When selecting an affiliate, have a map page that shows all the chalets for [Bramble]
  • Create a sorting table for the various scenarios (mobile/desktop,  Admin/User,  Filters selected)
- Pending
2.09

Ops Warnings

  • Build out a list of Transfers (not bookings) where certain aspects are unclear on the booking
    • Accommodation unknown
    • Flight unknown
    • Follow-up flag marked 
    • Missing client emails or phone numbers
    • Phone number check
      • Email link to client for confirmation
- Pending
2.10

Management: XLS exports:

  • Transfers 
  • Bookings
  • Driver transfers
  • By Affiliate
  • By Private/Private+/Shared
  • Accommodations
  • Revenue reporting
  • Include reports by CreatedBy/CreatedOn
  • Work out how to handle view the revenue comparison across seasons
  • Control start date from an input in Systems Settings
    • Perhaps have a single button that opens multiple versions 
  • Create a service that count/revenue of all private/shared transfers by Client Name (in Client list)
Pending
2.11

Flight scraper

Populate Kayak data

  • Add a button (under Actions) that ROLE_ADMIN can run to populate flights (Kayak) for all active airports serving GVA, for a period of dates. 
    • Use same date schedule as in the Settings

Populate GVA.CH data

  • On morning of T+1, run the GVA.CH scrape for ‘tomorrow’, on all flights
    • This is a one-off check, mainly to confirm that the scheduled times from Kayak match the times from gva.ch.  ie ScheduledDepartureTimeGvach === ScheduledArrivalTimeGvach
      • Chron: Run at 8am, on T+1 (ie on Monday 8am, run Tuesday's GVA.CH Overview and Details flight scraper) 
  • Throughout T+0, the ‘detailed' refresh should run on “selected” individual flights, where the criteria for selection is:
    • Arrivals:
      • actualArrivalTime is null and
      • scheduledArrivalTimeGvach is after ‘now’ - 1hour 
    • Departures
      • actualDepartureTime is null and
      • status is not cancelled
      • scheduledDeparturelTimeGvach is after ‘now’ - 1hour 

Code-share

  • Code share is no longer a relational field (linked to FlightTrips). 
  • The Codeshare entity has a flightNumber and the record stores the associated other flights. 
    • This enables mutliple flightTrips with the same flightNumber to be linked to the CodeShare
      • So the determination has to be a lookup on a matching flight number
  • The objective is to combine multiple entries for the same flight and return the code-share data in the flight details in the transfer bookings (so a user can search for their flight by any of the flight numbers)
  • Check the scrape functionality on the "Operated by" to identify “child” flights (ie the ones that are going to be deleted)
  • Establish a view  of all flights where there are more than one flight departing at the same time to the same location.
  • Build up a list of code-shares -   question, the gva.ch notes scrape concatenates the flight numbers.  Should we maintain that array or separate into individual code-share identifiers - which will allow us to identify ones to delete?)
  • Write a service that identifies the duplicates and delete
Pending
2.12

Customer Emails Fragment

  • In the first section of the email, where you give the reference number (e.g. “Booking reference: VBC-1234”), create a link from the reference number, so when the client replies to the email we can launch the booking from the email
    • It won't work for clients or be a security risk:  For users (ie clients) without Admin/Staff access the link shouldn't work, and it should just take them to the homepage 
    • For office/admin, it should open the booking
  • Create a new fragment for Baby/Child seats.  If booking has a Baby or a Child then add the fragment to the booking.  Unlike the other fragments the need for it is not a function of Type (Shared/Private) or Destinations, but rather the existence of a baby/child seat

Customer Booking Confirmation

  • At top include status - Confirmed/Enquiry/Cancelled
  • Should include EVERYTHING in the booking that the customer gives us (not driver or actual pick up times)
    • Flight details (Airline, Flight Number, and times (arrival times and dep airport for arrivals, opposite for departures)
    • Chalet name, address and our link too (which should have the map once we had logged all the locations)
  •  Add in the Fragments any Destination specific PickUp or DropOffInstructions (Private Only - Not Shared)
  • And finally add all relevant Fragments at end of Confirmation (eg Company Footer etc)

 

Customer Emails Template

  • New email template required.  It will be used for Shared passengers (arrivals only -ie Uphill).
  • The purpose of the email is to check that they are on the expected train, and if not to get the information as to what train they are actually on. 
  • Roughly, the email should say "We are expecting you on the [11:17] train from GVA to LeChable.. Please click below to confirm you made that train, or if you did not make that train, please confirm which train
    • And present a list of possible other train times.  That button should then reassign the client to the correct train (and pick up shuttle).
      • There is a case where there is no space (or not enough space) available on the adjusted bus - and if so we need to think about the solution for that.  In a sense that is not our problem as they missed their original shuttle
      • Furthermore we should create a public page showing the number of seats available on the buses. (I worry that this gives competitive info away, but let's build it for now
Pending
2.13

Public pages (non-protected)

  • Add links from the HomePage to the following public information - to drive more traffic to the website  (will this adversely affect our performance)
    • Train times (DONE)
    • Flight board (DONE)  
    • Business Contacts (eg restaurants, shops, hotels)  (DONE)
    • Chalet map (DONE)
    • Shuttle available seats (WIP)
    • List of Private+ trips (ie those trips with free seats available)
  • Enure they are optimised for mobile and desktop views
Pending
2.14

Taxi partners

There are different levels of Partners

  • “Independent drivers” who only have 1 car and work for themselves
    • Can login and accept available trips 
  • Larger companies with multiple cars and multiple drivers

Trips to Outsource view

  • Create a "Available trips” 
    • Understand the starting point of each driver and attempt to offer pairs of trips that start/end at their chosen venue
    • But show all trips in case they have a natural offset
    • Press button to accept (how do we refresh first?
Pending
2.15

Accommodation: Index

  • Compute the number of transfers, and the value of the transfers, in the “Reporting Period”
  • Create a service called “FinancialReportingService” that has two functions that compute these statistics (placeholder for now)
    • TransferCountByAccommodation
    • TransferValueByAccommodation
  • In the Systems Settings entity add a ReportingStartDate and ReportingEndDate fields that is used in this service.
  • This service will also do 
    • TransferCountByUser
    • TransferValueByUser

Accommodation: Street map 

  • Sizing of map looks wrong.  Take an example with 2 chalets in Rue Barmete….
  • There should be a maximum zoom setting 
  • Filters on Accommodation Index:
    • City (i.e. destination)
    • By “type” in a given Destination (e.g. hotel, restaurant, shop etc in Verbier)  
  •  Map - by Affiliate  (ie show all <<Bramble Ski>> properties
    • Link from the Affiliates page.  Or from the Resort contacts page 
Pending
2.16

Client confirmations

  • Launching Client Confirmations from the Booking Index…. Non editable emails (thunderbolt icon) still launch in new window DONE
  • In emails, the %Total price% is not getting displayed DONE
  • Sender field is at the bottom of the page.  Let's put it at top, to the right of the Subject DONE

Email import

  • No pending emails - is that right? DONE?

New booking

  • Client lookup seems a lot faster, but not instant.  Fair? DONE
  • Transfer: Remove from Destination drop-down list any inactive destinations  NOT DONE
  • Prices are not rounding to the nearest CHF5  (eg 300, 305, 320, 405, 450……   not 302, 452, 519) DONE
  • Pricing parameters now include 14, 20, 23, 26, 32 passenger parameter…. DONE
- Pending
2.17

Shuttle: Edit Screen

  • Remove at the bottom the SBBTrain dropdown list and the Uphill/Downhill field.  DONE
  • List of Transfers includes ALL trips (PT and Shared), admittedly restricted to that day.   But doesn't show name of Passenger, or Address.  DONE??
  • When you edit a shuttle and press Save, it should go back to the Shuttle page from that shuttle (ie 26-8-2025 in this case).  DONE??
Pending
2.17

Calendar page

Pending
2.19

Private Plus taxi

  • Pricing, there should be a discount for the first taker as they are taking the no-share risk. 
- Pending
3 Payroll #: 0
3.01

Response from Website Inquiry Contact Form process (in Payroll Project)

  • As in ATS, the process of submitting an inquiring will create a new User.  Ensure that the role of that new user include ROLE_EMPLOYER
  • New Employers can choose the services they want to avail themselves of
    • Monthly payroll
    • Employment contract negotiations
    • Health insurance set-up
    • Employee permits (including managing capturing and checking the data from the employees)
    • Employee admin (housing, transport, training)
    • Ski hire for the season
      • Use the Product entity to control the text for each service (including pricing)
      • Check box for each Product that each Employer wants to take up
  • When a User logs in, if they are ROLE_EMPLOYER but do not have an associated Employer details set up, it will show a page designed to walk them through setting up an Employer. 
    • Employer page should include a question as to what services they would like to use. (See above)
  • If an Employer has been set up, it will direct them to their own dashboard page with their Employer(s) (likely 1 but can cater for others) with the links to their various pages with some sort of summary info.
  • If a a ROLE_EMPLOYEE or ROLE_USER, then design a dashboard page for an Employee
    • Access to their personal details
    • Store of permits
    • Payslips
    • General information and help
  • When uploading an Employee, be sure to track Default Language

 

Payroll – Other tasks 

  • Create a Pricing entity
    • Product (relational field)
    • # Employee and price (thoughts – single entry of multiple entries per product)?
  • Create a Communications Template entity
    • Name
    • Text in EN, FR, DE etc
  • When uploading a new Employee be sure to include their country so the User Default language can be set.
    • Edit the Employee upload function (New or Edit or Import) to check the employee language setting 
- Pending
3.02

 Employee import

  • Creation of a User for the employee upon import and or manual input
    • Make sure email doesn't exist already
    • And if email added 
    • Service to check if email is in the User list (see view in Employees, currently 1==1 is the check
- Pending
3.03

Employee

  • If you edit an Employee who is Single, it still shows their Spouse details
  • Divorce date should only appear if divorced (and clear if saved as not divorced)
  • Derive the Impot classification from Married/Single/Divorced and Children
- Pending
4 LinkedIn Export #: 2
4.01

Search function

  • Consider what terms are needed and design a search page

Changing URL

  • Consider a way to address when someone changes their LinkedIn URL.
  • If URL link fails, send to a separate view for manual correction
  • Include a flag for failed LinkedInURL
  • Cron for updates/refreshing stale profiles
  • How do I track a change?

 

 

 

 

 

Pending
4.02

Recruiter firm 

  • Add a flag to determine if you would like to share connections across the firm fully or vertically only.  How to motivate non-admin users to participate -  
  • If vertically, need to identify the admin users at the firm

 

Settings

Add language for each profile improvement point:  

  • Missing Photo / Poor Quality Photo
  • Missing Contact Details
    • missing phone
    • missing international format
    • missing email
  • Missing Skills or Too Few Skills
    • “People in your industry typically list 10–20 skills. You currently list 3.”
  • Missing Languages
  • Current job end date missing
  • Job has no description
  • Outdated Education
    • no graduation year
    • no degree
  • Missing Summary / About Section
  • Weak Headline You can compare headline vs job title.
    • If headline = job title → suggest improvement:
      “Your headline is identical to your job title. Stronger headlines include expertise or niche.”
  • Connection Strength Score
    • This is unique to LinkSync:quality of connections
    • seniority distribution
    • employer ranking
    • cross-industry diversity
  •  Missing Location or Incorrect Location Format
    •  missing city
    • missing region
    • unclear location 
Pending
4.03

Exports

  • For the PartnerFirm export add extra columns to the XLS export
    • Name of PartnerFirm Users who is connected to the LinkedInContact
- Pending
4.04

The Scraper buttons

  • Currently the code tracks the status - basic details scraped, then full scrape. I think we need to consider how we refresh the basic scrape (check # connections count?) to see if a new scrape is required

So how should it work

  • First time use:
    • Hide “Import and Email button”, and “Export” and "Email" buttons
    • Hide Connections Scraped info button
    • Scrape button should show: 1) Import Connections.  
      • This should popup the following text box:  “Step 1.  Our servers will now login to Linkedin and pull in the basic details of all your [1,234] connections. ….
- Pending
4.05

Scheduling the scrapes

  • Schedule the scrapes to run in batches (e.g. 20 at a time, once every 6 hours - i.e 80 a day -  to minimise the chance of LinkedIn security blocking the IP
    • I recognise that for  someone like me with 1.5k contacts, the process will take ~20 days, but that is ok. 
      • Perhaps email progress report (and a file with a subset of the users) after each run  with the updates so far  (once we have fully tested this)
  • I have created a linked-inexport@atts-systems.com email address (password Descartes99) for the email to be sent from
- Pending
5 Immigration Services #: 1
5.01

Other

  • Review site in mobile mode. Currently the following screens do not look great:
    • When a user is logged in:
      • Show a transaction (eg http://localhost:8000/transaction/19/show)
        • And editing each Document (eg Passport, Birth Cert, Driving License etc)
  • Security
    • The My Availability page needs to be security protected (just the specific-user and staff)
  • PriceList page
    • This should cycle through the Services Offered and show the summary and price
  • Complete MEU1, MEU3 and Bank of Cyprus forms
    • Complete the code to show the questionnaire titles in either English or Greek (or both) in the MEU1 and MEU3 forms
    • Ensure that the forms ‘import’ the necessary information in the right place (eg from User, or Passport or Employment Contracts etc)
- Pending
5.02

Immigration Services site

  • Include the ability to upload an email into a “New Client” form
  • Complete
    1. MEU1 form (partially complete) population
    2. MEU3 form 
    3. Bank of Cyprus form 
  • Check all the customer pages work on a mobile
    1. Need to upload scans via camera on phone
  • Not all the forms (passport, driving licenses etc) have the Controller built to upload files (and delete files)
Pending
5.03

Process of reviewing docs (e.g. Passport, Utility bill, Tenancy etc).

  • Client upload the respective document and fills in the details required.
    • Clients should only see the first column; not the column(s) for the Review process or the reasons for failure….. 
    • Clients should not be able to edit the review section
    • Status should be set to default
  • GRTS review the doc and show comments.
    • And send comments to client
  • Client then ‘corrects’ the error.
    • How do we track this?
    • Can we have a history entry that tracks the changes? A non-editable field that tracks the date of the change, who made it and what was made.  
    • If a revised scan is uploaded, do we keep the old one (rename it?), and link to it in the history field?
    • Client amending should reset to Pending.  
    • Errors before should still be visible to staff members
- Pending
6 Criminal Record Checks #: 0
6.01

Text for CRC

Application forms can be obtained through the Internet from the official Police website: www.police.gov.cy - Previous Conviction Registry

Every application must be accompanied by:

  1. An official receipt for the payment of the amount of 420.00.  The payment could be made:
  • in cash at any Divisional Police Headquarters or at any Embassy or Consulate of the Republic of Cyprus
  • remittance to the Central Bank of Cyprus in the name of the Chief of Cyprus Police
  • (SWIFT CODE CBCYCY2NACC, Government General Account, account no. CY1600 10000100000000006001010) -only in Euro
  1.  Identity Car, Passport, for Cypriot citizens
  2. Alien Book, Pink or Yellow and passport for Aliens
  3. Written authorisation in case that the application is submitted from a third person besides the applicant.

Note: The content of this application are subject to the provisions of the General Data Protection Regulation (EU) 2016/679 and of the Law 125(1)/2018

- Pending
7 Tennis Club #: 4
7.01

Tournament

  • Create the draw and the matches 
    • Including scheduling futures rounds
  • Show the contact details of one's next opponent
- Pending
7.02

New entity with Courtey rankings vs User

  • Import/export function or ability for user to edit their own ranking points
- Pending
7.03

Management reporting stats pages 

- Pending
7.04

Other

  • Approach public schools to ‘rent’ their tennis courts over the summer
  • Simultaneously book a Court(s) for Coaches and for Group Sessions. 
    • What happens if the court is not free?
  • For a coaching session book a clay and a hard court and release one when booked.  And release the backup 24 hours before the lesson
    • When adding a tennis Group Session that is chaperoned by a coach, add that to the coaches calendar too. 
    • Cancellations of a coaching booking would free up the coach/court (or back to the ‘bagsy’)
      • Q:  When should the system release a court if the coach is not booked and there is demand for the court (ie when does the bagsy run out)?
      • Q:  Should the coach reserve a hard or clay court.  How should you handle a client who wants to choose (suggestion - the coach bagsies a hard court and if available at the time of booking then it can move to a clay).  Do you want to differentiate between courts (eg 8v 9 etc)?
  • Add calendar invite when someone makes a coach or session of court booking
  • Have a tennis coaches view that shows today and tomorrow, that is not password protected (but hidden link) allowing the coaches to see their calendar with 1 click.  Make it work on phones
    • Q: What phone do Wyn, Steve, Elena have?
  • Decide order of priority for court usage
  • Show account balance/kitty in Header 
  • Improve ergonomics of the the coach bio page.
    • Ask Wyn for a bio, 2-3 photos and a video  for him Steve and Elena
  • Track no-shows
    • Q: Should a “no-show” prevents new bookings for [x] weeks.  On the first/second/third strike?
  • Track canclled bookings? 
    • Cancel bookings should be saved in a new entity and perhaps tracked.  What limit to put on that?
  • Flexi memberships: Track number of flexi court vouchers remaining
  • Compute/summarise:
    • Court stats by month (# $$$)….. Hard, clay by hour - broken down by the DoW and hour.   ie should you change prices at different times of the day to balance the loads better
    • Coach stats by month (# $$$)
    • Member stats by month
      • Number of court booiings, number of coaching and group sessions. 
      • Which members break-even vs their membership cost etc?  Should you increase/decrease the annual subscription?
  • Membership reminders
  • Excel import/export of all users to upload members for the admin - test
  • Ability to process emails into a booking easily.
- Pending
7.04

Create a unique page for a user, that doesn't require a login and allows them to sign up for sessions 

Pending
7.06

Premiership table view of players

  • Show last 5 wins/losses
  • Button for Single or Doubles
  • However over for date, player, score

Scrape ITF player rankings weekly 

 

- Pending
7.07

Tennis Court Availability

  • Future bookings count - had to change
- Pending
7.07

Users

  • Have ability to create a user from an Outlook lookup.  ie press a button to call up Outlook and search your VCFs and import in the necessary fields
Pending
7.08

Bugs to fix

  • Group Session Index - how do I sort them differently if logged in or not (different column count)
  • My availability grid and the  “I am away button” (line 110 in Index).  Seem to have lost the functionality on these buttons altogetherPayroll
Pending
7.08

Formatting

  • Photo handling on the Interests page
  • Background colour on footer and header
  • Height of the header, overshadowing the content
- Pending
7.09

Users - Delete All

  • Doesn't work
- Pending
7.11

Payment

  • Stripe set-up
  • Handling of visitors - visitor fee applied to members Tournie and leagues Platinum vs good memberships
- Pending
7.17

User

  • When you register for the club as if permanent or temporary login.  
    • Have feature that emails logged members with expired memberships to remove them from the main list. 
  • Field.  Temp membership - date.  And remove those from the drop-down menus etc. 
  • Prepare a confirmation email to be sent to all bookings (each night and upon making the booking).  In terms of the reference I don’t think we can use the court availability I’d as that changes if they change court. For the coaching booking that can work though?
  • When a new user logs in, have a field that asks if they are a temporary visitor or a long-term member
    • Field:
  • Add Google Analytics
- Pending
7.18

Box leagues/ladder

  • Add ability to  run a box league 
  • Look at https://boxleague.net
  • == entity: tennisClub
  •       Name, address, tel, notes, administrator, toilet, GPSlocation, parking, bar, changing rooms, showers 
  • == entity:   boxLeague
  •       tennisClub (relation), box league number (1, 2…. x), sets, promotion count, demotion count, date for completion 
  • == players
  •       Member of a specific box league at a specific club(s)
  •  Box league then creates a list of fixture (grid), allows the users to enter their own score and.or the administrator. Includes walkover 
  • Computer the winner/loser 
  • Computes next season starting point. 
Pending
8 Tennis Finder #: 11
8.01

When booking an Aceify 

  • When making a booking for an Aceify client, check the Aceify credit available 
    • Malcolm to check how to access a client’s balance, and if there is a unique URL  - via the client’s email or client’s ID
Pending
8.02

Complex reservations

  • Allow users to book repeat reservations targeting mutliple venues, where their choice will prioritise either the venue or the times or the time on court 
- Pending
8.03

ClubSpark

  • Buy smart card per venue. Limit bookings to one per day and 5 per week per smart card to avoid scrutiny. 
- Pending
8.04

Splitting the court cost bill

  • One person will have to first buy the court, but the functionality I want is for that person to then be able to split the bill across the other players
    • Create a “My Bookings” link - that shows the bookings where the logged-user is one of the players (either player1, player2, player3 or player 4).  
    • This view shows who has currently paid for the court (and the split after some reallocation) and includes a button that “Pays my share”,
    • That process involves the non-paying player(s) to send their share of the cost to the kitty of the person that paid the bill.  It will shows as a like a TopUp on the account of the recipient and a debit on the Account of the sender 
    • Email functionality to send a reminder to the non-payers
- Pending
8.05

Meet new players 

  • E-mail functionality test
  • To make contact with a new player, the system should not show their email/phone number, but rather wait until the recipient has accepted the request  
    • Show list of reach-outs in my Connections list as Pending.
      • Mark contacts as Agreed(tick), Pending (?), or Rejected (cross). 
  • Ability to download a Outlook contact file
Pending
8.06

Scraping courts 

  • MyCourts  (generic code that will then apply to all the MyCourts clubs)
  • Duke’s Meadow – requires a bespoke scrape
  • Aphrodite Hills
Pending
8.07

Overcome the IP blocking issue

  • Proposed solution is to scrape using a local copy of the site that posts the results to the live site
  • Question: How do we overcome the IP block that is applied to our site for the making of bookings?  is the IP address already blocked?  Note this will be far less frequent than the scrape, so we could use a dynamic IP address for that component of the site as the volumes will be far lower?
Pending
8.08

Hit with me

  • Players upload a video of their game
  • Gets rated by a coach (£2 charge)
  • Grid of pricing for player vs others for relative standards Punter playing brings the balls and the court. 
  • No show - cost of court and a fine of 5quid 
- Pending
8.09

Payments

- Pending
8.10

Scraping

  • Solve how to “prompt” a court availability scrape from the live site
  • Scrape history view not working
Pending
8.11

Email functionality

  • Work on the confirmation emails
    • Punter confirmation
    • Complex reservation
    • Aceify booking
Pending
8.12

Tennis coaches

  • Create an user-type of “Aceify Coach”
  • When selecting a user, also select their chosen coach
  • Show the coaches bookings on the court screen.  
  • Book court in name of coach, and cc the player
Pending
8.13

Cancellations

  • Re-use a cancelled court?
  • Setting up a 1st reserve for any cancellations 
Pending
8.14

Bookings

  • Allow non-logged in users to book (ie straight to CC provider, take email)
  • Email confirmation
Pending
8.15

Booking completion

  • Complete the ClubSpark scraping functionality
    • One-click booking
    • Cancellations 
- Pending
8.16

Management statistics

  • History of court usage
  • The states of the court are:
    • No data => 1
    • Available => 2
    • Booked => 3
    • Closed => 4
  • Lifecycle (assuming not closed): 1>2>3
  • What do you need to know
    • New fields:
      • A) timeFirstScrape - Done
      • B) timeCourtReleased - Done
      • C) timeCourtTaken (ie time on a scrape  when the court was Available before but is now Booked) - Done
    • Compute
      • SnapUpTime:  (C-Max(A,B))
      • LeadTime: (PlayTime-C)  - Done
Pending
8.17

Handling a VIP booking (e.g. Jamie Delgado)

- Pending
8.19

Tennisfinder 

  • Tennis Venue entity:
    • For the 129 MyCourts clubs, can you try to convert the Longitude and Latitude data that we captured into the “embedded html” needed for the maplink, so the map-marker icon works?  
    • Can you run the postcode distance calculator for one player across all the MyCourt clubs to see if they all ok compute
    • The Map All button (showing the position of all the Active Courts on a single page) doesn’t seem to include the MyCourts clubs  
  • MyCourt Scraper
    • Can you build a scraper to extract the Court (whether tennis, squash or badminton) Availability for the “MyCourts” clubs
    • Can you bring in the data as to whether it is available and the price if it is a given
  • Booking a Court (ClubSpark)
    • Can we test the client emails when you book a court
    • Can you look to see if you can complete the single-click book for the courts?
  • Complex reservation (multiple days where we book the first court that comes available)
    • Can we create a chron that runs through all the complex reservations and makes a booking (and cancels others) that meet the criteria. For example,
      • If the #1 preference is free it books that and cancels the others
        • Question:  Do  we wait for all the first choices to be available before ‘hitting’ a second choice?  Or do we go through each hour and hitting the best one?  (Do you see the problem?)
          • Perhaps we should make that a question :  “Would you like us to immediately book a non-first preference option if there are some courts at your first preference still to be released? Be aware if we then wait those second/third/fourth choice options might have gone?”
    • We also have to think about how we use the bidding process...  
      • For a single venue/hour…. Do we give them a choice of court, or any court?
      • And do we charge the full bid price, or the next best bid +£1? How will the client know? Do we show the current highest bid  to encourage a higher bid- Yes?  And do we tell the first bidder that they have been out-bid?
      • I think we just take the full amount and the client
Pending
9 Financial Advisor #: 2
9.01

Mortgages

Scrape once a day the following (establish a chron job at a set time, eg 5pm)

  • Mortgage rates (from moneysupermarket.com)
    •  Bank name, Rate and Product Fee.  Set Term to 2yr or 3yr or 5yr and date =Today
  • Swap rates (Gilts or GBP-swaps) from investing.com [DONE]
    • 2yr, 3yr, 5yr, 10yr
Pending
9.02

Updating contributor site

  • Scrape either the YouTube  contributor site, or apple.com  to show all new shows
  • Only issue remaining is that they are not sorted by date pre expansion….   And a lot of YouTube dates at 12-Aug??
Pending
10 Whistles & Bells #: 0
10.01

Client export function

  • Export all clients or VCF, that aggregates across both the User, Client and Dog entities.
  • Contact form included that will upload to client CRM  (checking for duplicates)
  • Client contact details (and notes re dog) can be exported to a VCF or CSV so you can upload your client details directly into your phone/contacts (so you recognized in-coming calls/emails etc)
- Pending
11 Stephen-Nurse #: 1
11.00

Flights

  • I have added a new field in the FlightStats entity called “lowestPriceOneStop”
  • Amend the Kayak scrape to include 1-Stop flights as well as Direct-only (currently the search specifies Direct-flights only) and store 2 prices for each route/date…. the best Direct flight price in the field “lowestPrice” and the best 1-stop price in “lowestPriceOneStop”
  • I have adapted the calendarindex twig and the controller to show the choice of the user (button at the top to toggle between showing both Direct and Direct+1-stop)
  • Don't wait for each scrape to update the screen.  Update after each scrape (ie per day/route)  

 

Pending
13 Limassol School Run #: 0
13.01

Set up new project and live site 

- Pending
14 XVA Consulting #: 0
28 TBC #: 0
Loading…
Loading the web debug toolbar…
Attempt #