Commit dd05a76c authored by Gabriel Soares Correa's avatar Gabriel Soares Correa
Browse files

Feature/na 10/weekly routines

Showing with 172 additions and 13 deletions
+172 -13
......@@ -16,22 +16,119 @@ func NewWeeklyRoutinesRouter() *WeeklyRoutinesRouter {
func (u *WeeklyRoutinesRouter) RegisterRoutes(r *mux.Router) {
r.Path("/").Methods(http.MethodGet).HandlerFunc(u.GetAll)
r.Path("/{id}").Methods(http.MethodGet).HandlerFunc(u.Get)
r.PathPrefix("/").Methods(http.MethodPost).HandlerFunc(u.Post)
r.PathPrefix("/{id}").Methods(http.MethodPut).HandlerFunc(u.Put)
r.Path("/{id}").Methods(http.MethodDelete).HandlerFunc(u.Delete)
}
func (u *WeeklyRoutinesRouter) Get(rw http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
weeklyRoutine, err := findById(r.Context(), vars["id"])
if err != nil {
log.Printf("error finding weeklyRoutine by id: %s", err)
rw.WriteHeader(http.StatusInternalServerError)
return
}
bytes, err := json.Marshal(weeklyRoutine)
if err != nil {
log.Printf("error marshaling weeklyRoutine: %s", err)
rw.WriteHeader(http.StatusInternalServerError)
return
}
rw.Header().Set("Content-Type", "application/json")
rw.Write(bytes)
}
func (u *WeeklyRoutinesRouter) GetAll(rw http.ResponseWriter, r *http.Request) {
weeklyRoutines, err := findAll(r.Context())
if err != nil {
log.Printf("error finding weekly routines: %s", err)
log.Printf("error finding weeklyRoutine: %s", err)
rw.WriteHeader(http.StatusInternalServerError)
return
}
bytes, err := json.Marshal(weeklyRoutines)
if err != nil {
log.Printf("error marshaling weekly routines: %s", err)
log.Printf("error marshaling weeklyRoutine: %s", err)
rw.WriteHeader(http.StatusInternalServerError)
return
}
rw.Header().Set("Content-Type", "application/json")
rw.Write(bytes)
}
func (u *WeeklyRoutinesRouter) Post(rw http.ResponseWriter, r *http.Request) {
var weeklyRoutine WeeklyRoutine
err := json.NewDecoder(r.Body).Decode(&weeklyRoutine)
if err != nil {
log.Printf("error decoding weeklyRoutine: %s", err)
rw.WriteHeader(http.StatusInternalServerError)
return
}
weeklyRoutine, err = create(r.Context(), &weeklyRoutine)
if err != nil {
log.Printf("error creating weeklyRoutine: %s", err)
rw.WriteHeader(http.StatusInternalServerError)
return
}
bytes, err := json.Marshal(weeklyRoutine)
if err != nil {
log.Printf("error marshaling weeklyRoutine: %s", err)
rw.WriteHeader(http.StatusInternalServerError)
return
}
rw.Header().Set("Content-Type", "application/json")
rw.Write(bytes)
}
func (u *WeeklyRoutinesRouter) Put(rw http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
var weeklyRoutine WeeklyRoutine
err := json.NewDecoder(r.Body).Decode(&weeklyRoutine)
if err != nil {
log.Printf("error decoding weeklyRoutine: %s", err)
rw.WriteHeader(http.StatusInternalServerError)
return
}
weeklyRoutine, err = Update(r.Context(), vars["id"], &weeklyRoutine)
if err != nil {
log.Printf("error creating weeklyRoutine: %s", err)
rw.WriteHeader(http.StatusInternalServerError)
return
}
bytes, err := json.Marshal(weeklyRoutine)
if err != nil {
log.Printf("error marshaling weeklyRoutine: %s", err)
rw.WriteHeader(http.StatusInternalServerError)
return
}
rw.Header().Set("Content-Type", "application/json")
rw.Write(bytes)
}
func (u *WeeklyRoutinesRouter) Delete(rw http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
err := Delete(r.Context(), vars["id"])
if err != nil {
log.Printf("error finding weeklyRoutine by id: %s", err)
rw.WriteHeader(http.StatusInternalServerError)
return
}
rw.Header().Set("Content-Type", "application/json")
rw.WriteHeader(http.StatusOK)
}
......@@ -6,18 +6,45 @@ import (
"github.com/kamva/mgm/v3"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/bson/primitive"
"tools.ages.pucrs.br/notar-e-anotar/notar-e-anotar-back-end/pkg/routine_days"
)
type routine_day_id struct {
Routine_day_id primitive.ObjectID `json:"routine_day_id" bson:"routine_day_id"`
}
type WeeklyRoutine struct {
mgm.DefaultModel `bson:",inline"`
Year primitive.DateTime `json:"year" bson:"year"`
Routine_plan_id primitive.ObjectID `json:"routine_plan_id" bson:"routine_plan_id"`
Week_number int32 `json:"week_number" bson:"week_number"`
Wubject primitive.ObjectID `json:"subject" bson:"subject"`
Routine_days []routine_day_id `json:"routine_days" bson:"routine_days"`
Year primitive.DateTime `json:"year" bson:"year"`
Routine_plan_id primitive.ObjectID `json:"routine_plan_id" bson:"routine_plan_id"`
Week_number int32 `json:"week_number" bson:"week_number"`
Subject primitive.ObjectID `json:"subject" bson:"subject"`
Routine_days []routine_days.RoutineDays `json:"routine_days" bson:"routine_days"`
}
func create(ctx context.Context, weeklyRoutine *WeeklyRoutine) (WeeklyRoutine, error) {
coll := mgm.Coll(weeklyRoutine)
err := coll.CreateWithCtx(ctx, weeklyRoutine)
if err != nil {
return WeeklyRoutine{}, err
}
return *weeklyRoutine, nil
}
func Delete(ctx context.Context, id interface{}) error {
weeklyRoutine := &WeeklyRoutine{}
coll := mgm.Coll(weeklyRoutine)
err := coll.FindByIDWithCtx(ctx, id, weeklyRoutine)
if err != nil {
return err
}
err = coll.DeleteWithCtx(ctx, weeklyRoutine)
if err != nil {
return err
}
return nil
}
func findAll(ctx context.Context) ([]WeeklyRoutine, error) {
......@@ -28,11 +55,46 @@ func findAll(ctx context.Context) ([]WeeklyRoutine, error) {
return nil, err
}
weekly_routines := make([]WeeklyRoutine, 0)
err = result.All(ctx, &weekly_routines)
weeklyRoutine := make([]WeeklyRoutine, 0)
err = result.All(ctx, &weeklyRoutine)
if err != nil {
return nil, err
}
return weekly_routines, nil
return weeklyRoutine, nil
}
func findById(ctx context.Context, id interface{}) (WeeklyRoutine, error) {
weeklyRoutine := &WeeklyRoutine{}
coll := mgm.Coll(weeklyRoutine)
err := coll.FindByIDWithCtx(ctx, id, weeklyRoutine)
if err != nil {
return WeeklyRoutine{}, err
}
return *weeklyRoutine, nil
}
func Update(ctx context.Context, id interface{}, newWeeklyRoutine *WeeklyRoutine) (WeeklyRoutine, error) {
oldWeeklyRoutine := &WeeklyRoutine{}
coll := mgm.Coll(oldWeeklyRoutine)
err := coll.FindByIDWithCtx(ctx, id, oldWeeklyRoutine)
if err != nil {
return WeeklyRoutine{}, err
}
oldWeeklyRoutine.Year = newWeeklyRoutine.Year
oldWeeklyRoutine.Routine_plan_id = newWeeklyRoutine.Routine_plan_id
oldWeeklyRoutine.Week_number = newWeeklyRoutine.Week_number
oldWeeklyRoutine.Subject = newWeeklyRoutine.Subject
oldWeeklyRoutine.Routine_days = newWeeklyRoutine.Routine_days
err = coll.UpdateWithCtx(ctx, oldWeeklyRoutine)
if err != nil {
return WeeklyRoutine{}, err
}
return *oldWeeklyRoutine, nil
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment