Skip to content
This repository was archived by the owner on Jul 31, 2025. It is now read-only.

Commit 30cda19

Browse files
Merge pull request #42 from ApprenticeofEnder/dev
Pre Release Deployment
2 parents f6a5ba8 + 89652b5 commit 30cda19

File tree

101 files changed

+4786
-2665
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

101 files changed

+4786
-2665
lines changed

.env.tpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
NEXT_PUBLIC_SUPABASE_ANON_KEY=op://CourseFull/CourseFull/$COURSEFULL_ENV/NEXT_PUBLIC_SUPABASE_ANON_KEY
22
NEXT_PUBLIC_SUPABASE_URL=op://CourseFull/CourseFull/$COURSEFULL_ENV/NEXT_PUBLIC_SUPABASE_URL
33
NODE_ENV=op://CourseFull/CourseFull/$COURSEFULL_ENV/NODE_ENV
4-
DATABASE_URL=op://CourseFull/CourseFull/$COURSEFULL_ENV/DATABASE_URL
4+
DATABASE_URL=op://CourseFull/CourseFull/$COURSEFULL_ENV/DATABASE_URL
55
JWT_SECRET=op://CourseFull/CourseFull/$COURSEFULL_ENV/JWT_SECRET
66
RAILS_ENV=op://CourseFull/CourseFull/$COURSEFULL_ENV/RAILS_ENV
77
SUPABASE_SERVICE_KEY=op://CourseFull/CourseFull/$COURSEFULL_ENV/SUPABASE_SERVICE_KEY

app/controllers/api/v1/deliverables_controller.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,11 +71,11 @@ def set_api_v1_deliverable
7171

7272
# Only allow a list of trusted parameters through.
7373
def api_v1_deliverable_params
74-
params.require(:api_v1_deliverable).permit(:name, :weight, :mark, :notes, :api_v1_course_id, :status)
74+
params.require(:api_v1_deliverable).permit(:name, :weight, :mark, :notes, :api_v1_course_id, :status, :start_date, :deadline)
7575
end
7676

7777
def api_v1_deliverable_update_params
78-
params.require(:api_v1_deliverable).permit(:name, :weight, :mark, :notes, :status)
78+
params.require(:api_v1_deliverable).permit(:name, :weight, :mark, :notes, :status, :start_date, :deadline)
7979
end
8080
end
8181
end

app/controllers/api/v1/users_controller.rb

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,8 @@ def destroy
3838
res = http.delete("/auth/v1/admin/users/#{@supabase_id}", headers)
3939
res.value
4040
rescue Net::HTTPClientException
41-
Rails.logger.error(format('Attempt to delete Supabase User with ID %s failed. Status code: %s', @supabase_id,
42-
res.code))
43-
Rails.logger.error(format('Deletion details: %s', res.body))
41+
Rails.logger.error('Attempt to delete Supabase User with ID %s failed. Status code: %s', @supabase_id, res.code)
42+
Rails.logger.error('Deletion details: %s', res.body)
4443
return render json: { error: 'Failed to delete user.' }, status: res.code
4544
end
4645

@@ -59,12 +58,17 @@ def progress
5958
'api_v1_semesters.status AS status'
6059
]
6160

61+
joins = [
62+
'LEFT JOIN "api_v1_courses" ON "api_v1_courses"."api_v1_semester_id" = "api_v1_semesters"."id"',
63+
'LEFT JOIN "api_v1_deliverables" ON "api_v1_deliverables"."api_v1_course_id" = "api_v1_courses"."id"'
64+
]
65+
6266
group_by_clauses = [
6367
'api_v1_semesters.id', 'api_v1_semesters.name', 'api_v1_semesters.goal', 'api_v1_semesters.status'
6468
]
6569

6670
attempted_semester_progress = @api_v1_user.semesters
67-
.joins(courses: :deliverables)
71+
.joins(joins)
6872
.select(
6973
*select_statements
7074
)

app/models/api/v1/course.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ def update_goal
2828
set_goal(goal)
2929
end
3030

31+
# TODO: Figure out if having grades and goals cap out at 100% would be better than having weighbt cap out at 100%
32+
3133
def set_goal(goal)
3234
self.goal = goal
3335
goal_calculator = GoalCalculator.new(goal)
@@ -43,7 +45,7 @@ def set_goal(goal)
4345
# end
4446

4547
save
46-
deliverables.active.update_all(goal: deliverable_goal)
48+
deliverables.active.update(goal: deliverable_goal)
4749
end
4850

4951
def current_grade; end

app/models/api/v1/deliverable.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
module Api
44
module V1
55
class Deliverable < ApplicationRecord
6+
attribute :start_date, :datetime
7+
attribute :deadline, :datetime
8+
69
# Relationships
710
belongs_to :course, foreign_key: 'api_v1_course_id'
811
belongs_to :user, foreign_key: 'api_v1_user_id'
@@ -21,6 +24,8 @@ class Deliverable < ApplicationRecord
2124
validates :notes, presence: true, allow_blank: true, length: { maximum: 5000 }
2225
validates :goal, numericality: { greater_than_or_equal_to: 0, less_than_or_equal_to: 100 }
2326
validates :status, inclusion: { in: statuses.keys }
27+
validates :start_date, presence: true
28+
validates :deadline, presence: true
2429
validates :course, presence: true
2530
validates :user, presence: true
2631
end

client/.prettierrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
22
"trailingComma": "es5",
33
"tabWidth": 4,
4-
"singleQuote": true,
4+
"singleQuote": true
55
}

client/@coursefull/data.d.ts

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import { ItemStatus } from '@coursefull/enums.d';
2+
import { DateValue, ZonedDateTime } from '@internationalized/date';
3+
4+
export interface BaseAcademicItem {
5+
id?: string;
6+
api_v1_user_id?: string;
7+
status: ItemStatus;
8+
}
9+
10+
export interface Semester extends BaseAcademicItem {
11+
name: string;
12+
goal: number;
13+
courses: Course[];
14+
}
15+
16+
export interface Course extends BaseAcademicItem {
17+
title: string;
18+
course_code: string;
19+
api_v1_semester_id?: string;
20+
goal?: number;
21+
grade?: number;
22+
deliverable_goal?: number;
23+
deliverables: Deliverable[];
24+
}
25+
26+
export interface Deliverable extends BaseAcademicItem {
27+
name: string;
28+
weight: number;
29+
mark: number;
30+
notes: string;
31+
start_date: ZonedDateTime;
32+
deadline: ZonedDateTime;
33+
api_v1_course_id?: string;
34+
goal?: number;
35+
}
36+
37+
export type Updated<T extends BaseAcademicItem> = T & {
38+
id: string;
39+
}
40+
41+
export interface User {
42+
id: string;
43+
first_name: string;
44+
last_name: string;
45+
email: string;
46+
supabase_id: string;
47+
courses_remaining: number;
48+
subscribed: boolean;
49+
}
50+
51+
export interface Product {
52+
name: string;
53+
description: string;
54+
stripe_id: string;
55+
stripe_price: string;
56+
price: number;
57+
}

client/@coursefull/dto.d.ts

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,22 @@
1-
// A place to put DTO objects
1+
import { Semester, Course, Deliverable, Product } from './data';
2+
3+
export interface SemesterDto extends Semester {
4+
courses?: CourseDto[];
5+
}
6+
7+
export interface CourseDto extends Course {
8+
deliverables?: DeliverableDto[];
9+
}
10+
11+
export interface ModifyCourseDto {
12+
api_v1_course: CourseDto
13+
}
14+
15+
export interface DeliverableDto extends Deliverable {
16+
start_date: string;
17+
deadline: string;
18+
}
19+
20+
export interface PaymentLinkDto {
21+
redirect: string;
22+
}

client/@coursefull/enums.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,5 @@ export enum ItemStatus {
2424
NOT_STARTED = 'not_started',
2525
ACTIVE = 'active',
2626
COMPLETE = 'complete',
27+
OVERDUE = 'overdue',
2728
}

client/@coursefull/home-page.d.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
export type HomePageRef = {
2+
ref: RefObject<HTMLDivElement>;
3+
scrollIntoView: () => void;
4+
navigateTo: () => void;
5+
};
6+
7+
export interface HomePageRefs {
8+
benefitsRef: HomePageRef;
9+
callToValueRef: HomePageRef;
10+
faqRef: HomePageRef;
11+
featuresRef: HomePageRef;
12+
heroRef: HomePageRef;
13+
inActionRef: HomePageRef;
14+
mechanicsRef: HomePageRef;
15+
pricingRef: HomePageRef;
16+
resultsRef: HomePageRef;
17+
socialProofRef: HomePageRef;
18+
}

0 commit comments

Comments
 (0)