Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 68 additions & 0 deletions api/externals/controller/cmapus_donation_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ type campusDonationController struct {
type CampusDonationController interface {
IndexCampusDonationByFloor(echo.Context) error
IndexCampusDonationBuildingByPeriod(echo.Context) error
CreateCampusDonation(echo.Context) error
UpdateCampusDonation(echo.Context) error
}

func NewCampusDonationController(u usecase.CampusDonationUseCase) CampusDonationController {
Expand Down Expand Up @@ -46,3 +48,69 @@ func (f *campusDonationController) IndexCampusDonationBuildingByPeriod(c echo.Co
}
return c.JSON(http.StatusOK, fundInformationBuildingByPeriod)
}

func (f *campusDonationController) CreateCampusDonation(c echo.Context) error {
ctx := c.Request().Context()
userId := c.QueryParam("user_id")
teacherId := c.QueryParam("teacher_id")
price := c.QueryParam("price")
receivedAt := c.QueryParam("received_at")
yearId := c.QueryParam("year_id")

if userId == "" {
return c.String(http.StatusBadRequest, "user_id is required")
}
if teacherId == "" {
return c.String(http.StatusBadRequest, "teacher_id is required")
}
if price == "" {
return c.String(http.StatusBadRequest, "price is required")
}
if receivedAt == "" {
return c.String(http.StatusBadRequest, "received_at is required")
}
if yearId == "" {
return c.String(http.StatusBadRequest, "year_id is required")
}

err := f.u.CreateCampusDonation(ctx, userId, teacherId, price, receivedAt, yearId)
if err != nil {
return err
}
return c.NoContent(http.StatusCreated)
}

func (f *campusDonationController) UpdateCampusDonation(c echo.Context) error {
ctx := c.Request().Context()
id := c.QueryParam("id")
userId := c.QueryParam("user_id")
teacherId := c.QueryParam("teacher_id")
price := c.QueryParam("price")
receivedAt := c.QueryParam("received_at")
yearId := c.QueryParam("year_id")

if id == "" {
return c.String(http.StatusBadRequest, "id is required")
}
if userId == "" {
return c.String(http.StatusBadRequest, "user_id is required")
}
if teacherId == "" {
return c.String(http.StatusBadRequest, "teacher_id is required")
}
if price == "" {
return c.String(http.StatusBadRequest, "price is required")
}
if receivedAt == "" {
return c.String(http.StatusBadRequest, "received_at is required")
}
if yearId == "" {
return c.String(http.StatusBadRequest, "year_id is required")
}

err := f.u.UpdateCampusDonation(ctx, id, userId, teacherId, price, receivedAt, yearId)
if err != nil {
return err
}
return c.NoContent(http.StatusOK)
}
34 changes: 34 additions & 0 deletions api/externals/repository/campus_donation_repository.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ type campusDonationRepository struct {
type CampusDonationRepository interface {
AllCampusDonationByFloor(context.Context, string, string) (*sql.Rows, error)
AllBuildingsByPeriod(context.Context, string) (*sql.Rows, error)
CreateCampusDonation(context.Context, string, string, string, string, string) error
UpdateCampusDonation(context.Context, string, string, string, string, string, string) error
}

func NewCampusDonationRepository(c db.Client, ac abstract.Crud) CampusDonationRepository {
Expand Down Expand Up @@ -143,3 +145,35 @@ func (fir *campusDonationRepository) AllBuildingsByPeriod(c context.Context, yea

return fir.crud.Read(c, query)
}

func (fir *campusDonationRepository) CreateCampusDonation(c context.Context, userId string, teacherId string, price string, receivedAt string, yearId string) error {
dbDialect := goqu.Dialect("mysql")
ds := dbDialect.Insert("campus_donations").Rows(goqu.Record{
"user_id": userId,
"teacher_id": teacherId,
"price": price,
"received_at": receivedAt,
"year_id": yearId,
})
query, _, err := ds.ToSQL()
if err != nil {
return err
}
return fir.crud.UpdateDB(c, query)
}

func (fir *campusDonationRepository) UpdateCampusDonation(c context.Context, id string, userId string, teacherId string, price string, receivedAt string, yearId string) error {
dbDialect := goqu.Dialect("mysql")
ds := dbDialect.Update("campus_donations").Set(goqu.Record{
"user_id": userId,
"teacher_id": teacherId,
"price": price,
"received_at": receivedAt,
"year_id": yearId,
}).Where(goqu.Ex{"id": id})
query, _, err := ds.ToSQL()
if err != nil {
return err
}
return fir.crud.UpdateDB(c, query)
}
58 changes: 58 additions & 0 deletions api/generated/openapi_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 18 additions & 0 deletions api/internals/usecase/campus_donation_usecase.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ type campusDonationUseCase struct {
type CampusDonationUseCase interface {
GetCampusDonationByFloors(context.Context, string, string) ([]CampusDonationByFloor, error)
GetCampusDonationBuildingByPeriod(context.Context, string) ([]BuildingTotal, error)
CreateCampusDonation(context.Context, string, string, string, string, string) error
UpdateCampusDonation(context.Context, string, string, string, string, string, string) error
}

func NewCampusDonationUseCase(rep rep.CampusDonationRepository) CampusDonationUseCase {
Expand Down Expand Up @@ -104,4 +106,20 @@ func (f *campusDonationUseCase) GetCampusDonationBuildingByPeriod(c context.Cont
return result, nil
}

func (f *campusDonationUseCase) CreateCampusDonation(c context.Context, userId string, teacherId string, price string, receivedAt string, yearId string) error {
err := f.rep.CreateCampusDonation(c, userId, teacherId, price, receivedAt, yearId)
if err != nil {
return err
}
return nil
}

func (f *campusDonationUseCase) UpdateCampusDonation(c context.Context, id string, userId string, teacherId string, price string, receivedAt string, yearId string) error {
err := f.rep.UpdateCampusDonation(c, id, userId, teacherId, price, receivedAt, yearId)
if err != nil {
return err
}
return nil
}

type BuildingTotal generated.BuildingTotal
3 changes: 3 additions & 0 deletions api/router/router.go
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,9 @@ func (r router) ProvideRouter(e *echo.Echo) {

// campus_donationsのRoute
e.GET("/campus_donations/building/:building_id/floor/:floor_id", r.campusDonationController.IndexCampusDonationByFloor)
e.GET("/campus_donations/building/:building_id", r.campusDonationController.IndexCampusDonationBuildingByPeriod)
e.POST("/campus_donations", r.campusDonationController.CreateCampusDonation)
e.PUT("/campus_donations/:id", r.campusDonationController.UpdateCampusDonation)

// current_user
e.GET("/current_user", r.userController.GetCurrentUser)
Expand Down
Loading
Loading