Skip to content

Commit

Permalink
[fix]複数の画像の登録
Browse files Browse the repository at this point in the history
  • Loading branch information
Kubosaka committed Mar 19, 2024
1 parent 7a07938 commit 2b9c0b5
Show file tree
Hide file tree
Showing 5 changed files with 101 additions and 75 deletions.
8 changes: 4 additions & 4 deletions api/externals/repository/activity_repository.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ type ActivityRepository interface {
FindLatestRecord(c context.Context) (*sql.Row, error)
FindSponsorStyle(context.Context, string) (*sql.Rows, error)
AllDetailsByPeriod(context.Context, string) (*sql.Rows, error)
FindAcitivityInformation(context.Context, string) (*sql.Row, error)
FindAcitivityInformation(context.Context, string) (*sql.Rows, error)
}

func NewActivityRepository(c db.Client, ac abstract.Crud) ActivityRepository {
Expand Down Expand Up @@ -147,9 +147,9 @@ func (ar *activityRepository) FindSponsorStyle(c context.Context, sponsorStyleID
}

// 指定したactivity_idのactivityを取得する
func (ar *activityRepository) FindAcitivityInformation(c context.Context, activityID string) (*sql.Row, error) {
query := "SELECT * FROM activity_informations WHERE id =" + activityID
return ar.crud.ReadByID(c, query)
func (ar *activityRepository) FindAcitivityInformation(c context.Context, activityID string) (*sql.Rows, error) {
query := "SELECT * FROM activity_informations WHERE activity_id =" + activityID
return ar.crud.Read(c, query)
}

// 年度別のactivityに紐づくsponserとusersを取得する
Expand Down
2 changes: 1 addition & 1 deletion api/internals/domain/activity.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ type ActivityDetail struct {
Activity Activity `json:"sponsorActivity"`
Sponsor Sponsor `json:"sponsor"`
User User `json:"user"`
ActivityInformation ActivityInformation `json:"sponsorActivityInformation"`
ActivityInformation []ActivityInformation `json:"sponsorActivityInformations"`
StyleDetail []StyleDetail `json:"styleDetail"`
}

Expand Down
77 changes: 40 additions & 37 deletions api/internals/usecase/activity_usecase.go
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,7 @@ func (a *activityUseCase) GetActivityDetail(c context.Context) ([]domain.Activit
styleDetail := domain.StyleDetail{}
var styleDetails []domain.StyleDetail
activityInformation := domain.ActivityInformation{}
var activityInformations []domain.ActivityInformation

// クエリー実行
rows, err := a.rep.FindDetail(c)
Expand Down Expand Up @@ -207,27 +208,27 @@ func (a *activityUseCase) GetActivityDetail(c context.Context) ([]domain.Activit
return nil, errors.Wrapf(err, "cannot connect SQL")
}

row, err := a.rep.FindAcitivityInformation(c, strconv.Itoa(int(activity.Activity.ID)))
err = row.Scan(
&activityInformation.ID,
&activityInformation.ActivityId,
&activityInformation.BucketName,
&activityInformation.FileName,
&activityInformation.FileType,
&activityInformation.DesignProgress,
&activityInformation.CreatedAt,
&activityInformation.UpdatedAt,

)
if err != nil {
activity.ActivityInformation = domain.ActivityInformation{}

}else{
activity.ActivityInformation = activityInformation
rows, err := a.rep.FindAcitivityInformation(c, strconv.Itoa(int(activity.Activity.ID)))
for rows.Next(){
err := rows.Scan(
&activityInformation.ID,
&activityInformation.ActivityId,
&activityInformation.BucketName,
&activityInformation.FileName,
&activityInformation.FileType,
&activityInformation.DesignProgress,
&activityInformation.CreatedAt,
&activityInformation.UpdatedAt,
)
if err != nil {
return nil, err
}
activityInformations = append(activityInformations, activityInformation)
}

activity.ActivityInformation = activityInformations
activityInformations = nil

rows, err := a.rep.FindSponsorStyle(c, strconv.Itoa(int(activity.Activity.ID)))
rows, err = a.rep.FindSponsorStyle(c, strconv.Itoa(int(activity.Activity.ID)))
for rows.Next(){
err := rows.Scan(
&styleDetail.ActivityStyle.ID,
Expand Down Expand Up @@ -261,6 +262,7 @@ func (a *activityUseCase) GetActivityDetailsByPeriod(c context.Context, year str
styleDetail := domain.StyleDetail{}
var styleDetails []domain.StyleDetail
activityInformation := domain.ActivityInformation{}
var activityInformations []domain.ActivityInformation

// クエリー実行
rows, err := a.rep.AllDetailsByPeriod(c, year)
Expand Down Expand Up @@ -301,26 +303,27 @@ func (a *activityUseCase) GetActivityDetailsByPeriod(c context.Context, year str
return nil, errors.Wrapf(err, "cannot connect SQL")
}

row, err := a.rep.FindAcitivityInformation(c, strconv.Itoa(int(activity.Activity.ID)))
err = row.Scan(
&activityInformation.ID,
&activityInformation.ActivityId,
&activityInformation.BucketName,
&activityInformation.FileName,
&activityInformation.FileType,
&activityInformation.DesignProgress,
&activityInformation.CreatedAt,
&activityInformation.UpdatedAt,

)
if err != nil {
activity.ActivityInformation = domain.ActivityInformation{}

}else{
activity.ActivityInformation = activityInformation
rows, err := a.rep.FindAcitivityInformation(c, strconv.Itoa(int(activity.Activity.ID)))
for rows.Next(){
err := rows.Scan(
&activityInformation.ID,
&activityInformation.ActivityId,
&activityInformation.BucketName,
&activityInformation.FileName,
&activityInformation.FileType,
&activityInformation.DesignProgress,
&activityInformation.CreatedAt,
&activityInformation.UpdatedAt,
)
if err != nil {
return nil, err
}
activityInformations = append(activityInformations, activityInformation)
}
activity.ActivityInformation = activityInformations
activityInformations = nil

rows, err := a.rep.FindSponsorStyle(c,strconv.Itoa(int(activity.Activity.ID)))
rows, err = a.rep.FindSponsorStyle(c,strconv.Itoa(int(activity.Activity.ID)))
for rows.Next(){
err := rows.Scan(
&styleDetail.ActivityStyle.ID,
Expand Down
87 changes: 55 additions & 32 deletions view/next-project/src/components/sponsoractivities/DetailPage2.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,20 +19,27 @@ const DetailPage2: FC<ModalProps> = (props) => {
props.setPageNum(1);
};

const formatDate = (date: string) => {
const datetime = date.replace('T', ' ');
const datetime2 = datetime.substring(0, datetime.length - 10);
return datetime2;
};
const sponsorActivityInformations = props.sponsorActivitiesViewItem.sponsorActivityInformations;

const designProgress = DESIGN_PROGRESSES.filter(
(design) =>
design.id === props.sponsorActivitiesViewItem.sponsorActivityInformation?.designProgress,
);
const bucketName = props.sponsorActivitiesViewItem.sponsorActivityInformation?.bucketName;
const fileName = props.sponsorActivitiesViewItem.sponsorActivityInformation?.fileName;
const fileURL = `http://127.0.0.1:9000/${bucketName}/${fileName}`;
const designProgresses =
sponsorActivityInformations &&
sponsorActivityInformations.map((activityInformation) => {
const designProgress = DESIGN_PROGRESSES.filter(
(design) => design.id === activityInformation.designProgress,
);
return designProgress[0];
});

const fileURLs =
sponsorActivityInformations &&
sponsorActivityInformations.map((activityInformation) => {
const bucketName = activityInformation.bucketName;
const fileName = activityInformation.fileName;
return `http://127.0.0.1:9000/${bucketName}/${fileName}`;
});

console.log(designProgresses);
console.log(fileURLs);
const download = async (url: string, fileName: string) => {
const response = await fetch(url);
const blob = await response.blob();
Expand Down Expand Up @@ -90,27 +97,43 @@ const DetailPage2: FC<ModalProps> = (props) => {
</tbody>
</table>
<p className='mx-auto mb-2 mt-7 w-fit text-xl text-black-600'>広告デザイン</p>
<div className='my-7 flex flex-wrap justify-center gap-7'>
<div className='flex gap-3'>
<p className='text-black-600'>広告の状況</p>
<p className='border-b border-primary-1'>{designProgress[0]?.state}</p>
</div>
</div>
<div className='my-7 flex flex-wrap justify-center'>
{props.sponsorActivitiesViewItem.sponsorActivityInformation?.fileType ===
'application/pdf' &&
props.sponsorActivitiesViewItem.sponsorActivityInformation?.fileName && (
<embed src={fileURL} type='application/pdf' width='400' height='200' />
)}
{props.sponsorActivitiesViewItem.sponsorActivityInformation?.fileType !==
'application/pdf' &&
props.sponsorActivitiesViewItem.sponsorActivityInformation?.fileName && (
<img src={fileURL} alt='Picture of the author' width='200' height='200' />
)}
<div className='max-h-60 overflow-auto'>
{sponsorActivityInformations &&
sponsorActivityInformations.map((activityInformation, index) => (
<>
<div className='my-1 flex flex-wrap justify-center gap-7 border-t border-primary-1 p-2'>
<div className='flex gap-3'>
<p className='text-black-600'>広告の状況</p>
<p className='border-b border-primary-1'>
{designProgresses && designProgresses[index].state}
</p>
</div>
</div>
<div className='flex flex-wrap justify-center'>
{activityInformation?.fileType === 'application/pdf' &&
activityInformation?.fileName && (
<embed src={fileURLs && fileURLs[index]} type='application/pdf' width='200' />
)}
{activityInformation.fileType !== 'application/pdf' &&
activityInformation.fileName && (
<img
src={fileURLs && fileURLs[index]}
alt='Picture of the author'
width='160'
/>
)}
</div>
<PrimaryButton
className='mx-auto my-2'
onClick={() =>
fileURLs && download(fileURLs[index], activityInformation.fileName || '')
}
>
ダウンロード
</PrimaryButton>
</>
))}
</div>
<PrimaryButton className='mx-auto' onClick={() => download(fileURL, fileName || '')}>
ダウンロード
</PrimaryButton>
<div className='mt-2'>
<button onClick={() => toPage1()}>
<FaChevronCircleLeft size={30} />
Expand Down
2 changes: 1 addition & 1 deletion view/next-project/src/type/common.ts
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ export interface SponsorActivityView {
user: User;
sponsor: Sponsor;
sponsorActivity: SponsorActivity;
sponsorActivityInformation?: SponsorActivityInformation;
sponsorActivityInformations?: SponsorActivityInformation[];
styleDetail: SponsorStyleDetail[];
}

Expand Down

0 comments on commit 2b9c0b5

Please sign in to comment.