Code Monkey home page Code Monkey logo

dog-walker's People

Contributors

beauraines avatar dependabot[bot] avatar

Stargazers

 avatar

Watchers

 avatar  avatar

dog-walker's Issues

Remind clients to setup Pets

As a Client, I want to be reminded to add Pets if I don't have any setup so that my Bookings will display accurate information.

  1. Should not be allowed to create Bookings if no Pets are created.
  2. Should have some alert on the home screen reminding to setup Pets.

Display Client's Pet component

As a Client, I want to be able to see the information about my pets so I know that I communicate accurate information to my walker.

Scalable logic for with query string in Controller

Logic to process query strings which contain with values

Scale and abstract this code.
Should also recurese into the relationships to test for validitity.

if ($request->has('with')) {

Maybe this can help test relationships https://stackoverflow.com/questions/21615656/get-array-of-eloquent-models-relations

Or what ever triggers the https://laravel.com/api/6.x/Illuminate/Database/Eloquent/RelationNotFoundException.html

Display price on Booking

As a user, I want to be able to see the price for each booking so I know what I'm expected to pay.

Assuming the logic for computed price is correct, this is fairly straight forward. The computed price will have to be appended to the data returned... optional query scope maybe or model attribute to append?

Track if a booking has been paid for

As a Staff member, I want to be able to track which Bookings have been paid for so I can ensure that I get paid for all scheduled bookings.

  1. Needs some new attributes on the booking.
  2. The Staff member should be able to mark them as paid
  3. When submitting a payment, the Client should only then be able to mark as paid.

Pricing and Payment Epic

Maintain and display service prices
Add prices to booking
Allow for customer specific override
Add Cancelation fee

Switch API middleware to use the session cookies

Switch away from the token authentication so that the user object doesn't have to be passed to every Vue component that is going to make an API call.

Add Client Phone number

As a Client, I want to be able to enter my mobile phone number so that the Staff can get in touch with me and I can receive SMS notifications.

Ability to override Booking cost

As a staff member, I want to be able to override the computed cost of a Booking so I can charge the customer a reasonable amount of money for the booking

  1. Sometimes the computed cost just doesn't make sense, e.g. low effort pet or the booking is really far away.

UI to enter staff unavailability

As a Staff member, I want to be able to enter and maintain my unavailable dates to prevent Clients from booking on days when there is no one available to serve them.

Allow clients to create all bookings for a week

As a client I would like to create a week's worth of bookings in one screen to streamline the booking entry.

On one screen, the client would pick the service, the days and then click submit once, creating all the bookings for that week.

Display pet's name in Booking component

As a staff member, I want to see the client's and pet's names in the booking. As a client, I only want to see the pet's name, in the booking.

  • Display the pet's name in the booking component.
    {{ booking.client.name}} - {{ booking.service.name}}
  • Include the Client's related Pets in the data pull for the Booking component
    .get('api/booking?' + requestScope + 'with=service,client',{
  • Revise the with relationship test in the BookingController to properly handle dot notation for relationships, e.g. client.pets Maybe it only verifies the first relationship, but not the chained ones...
    if ($request->has('with')) {
    $withs = explode(',', $request->get('with'));
    foreach ($withs as $relationship) {
    if (method_exists('App\Booking', $relationship)) {
    $bookings = $bookings->with($relationship);
    } else {
    // TODO add error status
    return "The relationship " . $relationship . " does not exist on the Booking model";
    }
    }
    }

UI to maintain Services

As a Staff member, I want to be able to add and update Services.

Services should not be allowed to be deleted, but inactivated.

Assign prices to services

As a Staff member, I want to be able to set the price for a service so I can accurately charge my customers.

  1. Base price plus a per additional pet price.

Scalable logic for query scopes in API requests in Controller

Add logic to base controller to process query scopes in query strings

Scale and abstract this

if ($request->has('scope')) {
foreach (array_keys($request->get('scope')) as $key) {
$method = 'scope' . \Str::title($key);
if (method_exists('App\Booking', 'scope' . \Str::title($key))) {
$bookings = $bookings->$key();
} else {
//TODO add error status
return "The scope " . $key . " does not exist on the Booking model";
}
}
}

Staff can create Bookings

As a Staff member, I would like to be able to create Bookings for Clients so that I can ensure there is accurate information in the schedule.

Notes

  1. Staff can already edit and delete Bookings
  2. Clicking Create New Booking in the Booking component will open a modal to pick for which user, the allow you to enter one (or more) bookings.

Add today's booking to client view

  • Display today's booking on the client view using the Vue component.
  • Update the booking on the Staff homepage to leverage the Vue booking component.

Cancel, not delete bookings

  • Add soft deletes for cancellations
  • new query scopes to exclude or only return cancelled bookings
  • updated styling for cancelled bookings in the UI
  • remove edit/delete from cancelled booking display
  • update display when cancelling booking

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.