Merge branch 'feature/splitscreen-pickup-shelf-design' of https://dev.azure.com/hugendubel/ISA/_git/ISA-Frontend into feature/splitscreen-pickup-shelf-design

This commit is contained in:
Nino
2023-10-02 17:08:01 +02:00
6 changed files with 74 additions and 39 deletions

View File

@@ -1,5 +1,5 @@
import { Injectable, inject } from '@angular/core';
import { OrderService } from '@swagger/oms';
import { DBHOrderItemListItemDTO, OrderItemSubsetDTO, OrderService } from '@swagger/oms';
@Injectable({ providedIn: 'root' })
export class PickupShelfService {
@@ -8,4 +8,13 @@ export class PickupShelfService {
getOrderByOrderId(orderId: number) {
return this._orderService.OrderGetOrder(orderId);
}
patchOrderItemSubset(item: DBHOrderItemListItemDTO, changes: Partial<OrderItemSubsetDTO>) {
return this._orderService.OrderPatchOrderItemSubset({
orderId: item.orderId,
orderItemId: item.orderItemId,
orderItemSubsetId: item.orderItemSubsetId,
orderItemSubset: changes,
});
}
}

View File

@@ -3,7 +3,7 @@ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { ActivatedRoute, Router } from '@angular/router';
import { PickupShelfDetailsStore, PickupShelfStore } from './store';
import { ActionHandlerService } from './services/action-handler.service';
import { KeyValueDTOOfStringAndString, ReceiptDTO } from '@swagger/oms';
import { DBHOrderItemListItemDTO, KeyValueDTOOfStringAndString, ReceiptDTO } from '@swagger/oms';
import { OrderItemsContext } from '@domain/oms';
import { Observable, of } from 'rxjs';
@@ -69,34 +69,4 @@ export abstract class PickupShelfDetailsBaseComponent {
// .getCompletedTasks({ orderId: oi.orderId, orderItemId: oi.orderItemId, orderItemSubsetId: oi.orderItemSubsetId, take: 4, skip: 0 })
// .pipe(catchError(() => NEVER))
}
/**
* Anmerkung
* @param comment Neuer Kommentar
*/
updateComment(comment: string): void {
// const res = await this._omsService
// .patchComment({ orderId, orderItemId, orderItemSubsetId, specialComment: this.specialCommentControl.value ?? '' })
// .pipe(first())
// .toPromise();
// updateOrderItem mit neuem Kommentar (auch in der Trefferliste)
}
/**
* vsl. Lieferdatum
* @param data Datum
*/
updateEstimatedDeliveryDate(data: Date) {}
/**
* Abholfrist
* @param data Datum
*/
updatePickupDeadline(data: Date) {}
/**
* Zurücklegen bis
* @param data Datum
*/
updatePreferredPickUpDate(data: Date) {}
}

View File

@@ -14,7 +14,7 @@
(historyClick)="navigateToHistoryPage($event)"
[order]="order$ | async"
[notifications]="notifications$ | async"
(specialCommentChanged)="updateSpecialComment($event)"
(specialCommentChanged)="updateSpecialComment(item, $event)"
></page-pickup-shelf-details-item>
<page-pickup-shelf-details-tags *ngIf="showTagsComponent$ | async"></page-pickup-shelf-details-tags>
</div>

View File

@@ -156,22 +156,28 @@ export class PickupShelfOutDetailsComponent extends PickupShelfDetailsBaseCompon
updateDate({ date, type }: { date: Date; type?: 'delivery' | 'pickup' | 'preferred' }) {
switch (type) {
case 'delivery':
this.updateEstimatedDeliveryDate(date);
this.store.orderItems.forEach((item) =>
this.store.patchOrderItemSubset({ item, changes: { estimatedShippingDate: date.toISOString() } })
);
break;
case 'pickup':
this.updatePickupDeadline(date);
this.store.orderItems.forEach((item) =>
this.store.patchOrderItemSubset({ item, changes: { compartmentStop: date.toISOString() } })
);
break;
case 'preferred':
this.updatePreferredPickUpDate(date);
this.store.orderItems.forEach((item) =>
this.store.patchOrderItemSubset({ item, changes: { preferredPickUpDate: date.toISOString() } })
);
break;
default:
break;
}
}
updateSpecialComment(comment: string) {
this.updateComment(comment);
// TODO: If isDesktop true => Update shelf list item with new comment if specialCommentChanged
updateSpecialComment(item: DBHOrderItemListItemDTO, specialComment: string) {
this.store.patchOrderItemSubset({ item, changes: { specialComment } }); //
this.listStore.patchOrderItem({ orderItemSubsetId: item.orderItemSubsetId, changes: { specialComment } });
}
async navigateToEditPage(orderItem: DBHOrderItemListItemDTO) {

View File

@@ -6,10 +6,13 @@ import {
ListResponseArgsOfDBHOrderItemListItemDTO,
OrderDTO,
OrderItemProcessingStatusValue,
OrderItemSubsetDTO,
ReceiptDTO,
ReceiptType,
ResponseArgsOfIEnumerableOfValueTupleOfLongAndReceiptTypeAndEntityDTOContainerOfReceiptDTO,
ResponseArgsOfOrderDTO,
ResponseArgsOfOrderItemDTO,
ResponseArgsOfOrderItemSubsetDTO,
} from '@swagger/oms';
import { PickupShelfIOService, PickupShelfService } from '@domain/pickup-shelf';
import { Injectable, inject } from '@angular/core';
@@ -377,4 +380,45 @@ export class PickupShelfDetailsStore extends ComponentStore<PickupShelfDetailsSt
this._modal.error('Fehler beim Laden des Kunden', err);
this.patchState({ fetchingCustomer: false });
};
patchOrderItemSubset = this.effect(
(specialComment$: Observable<{ item: DBHOrderItemListItemDTO; changes: Partial<OrderItemSubsetDTO> }>) =>
specialComment$.pipe(
switchMap((data) =>
this._pickupShelfService.patchOrderItemSubset(data.item, data.changes).pipe(
tapResponse(
(res) => this.patchOrderItemSubsetDone(data.item)(res),
(err) => this.patchOrderItemSubsetError(err)
)
)
)
)
);
private patchOrderItemSubsetDone = (item: DBHOrderItemListItemDTO) => (res: ResponseArgsOfOrderItemSubsetDTO) => {
this.patchOrderItemSubsetInState({
orderItemSubsetId: item.orderItemSubsetId,
changes: {
specialComment: res.result.specialComment,
},
});
};
private patchOrderItemSubsetError = (err: any) => {
this._modal.error('Fehler beim Speichern des Kommentars', err);
};
patchOrderItemSubsetInState = this.updater(
(state, { orderItemSubsetId, changes }: { orderItemSubsetId: number; changes: Partial<DBHOrderItemListItemDTO> }) => {
return {
...state,
item: state.orderItems.map((i) => {
if (i.orderItemSubsetId === orderItemSubsetId) {
return { ...i, ...changes };
}
return i;
}),
};
}
);
}

View File

@@ -274,4 +274,10 @@ export class PickupShelfStore extends ComponentStore<PickupShelfState> implement
this._modalService.error('Fehler beim Laden der Liste', err);
this.patchState({ fetchingList: false });
};
patchOrderItem = this.updater(
(state, { orderItemSubsetId, changes }: { orderItemSubsetId: number; changes: Partial<DBHOrderItemListItemDTO> }) => {
return { ...state, list: this.list.map((li) => (li.orderItemSubsetId === orderItemSubsetId ? { ...li, ...changes } : li)) };
}
);
}