From 3d456128b10f651884856ca6282eac0a13ae1dd2 Mon Sep 17 00:00:00 2001 From: verboomp Date: Tue, 27 Jan 2026 09:57:53 +0100 Subject: [PATCH] First designs for ui --- .../core/service/AbstractService.java | 22 +- .../core/service/PictureService.java | 11 +- .../core/utils/StorageUtils.java | 23 ++ .../rest/PictureResource.java | 41 +-- ...-foto-documentation-web-1.0.0-SNAPSHOT.war | Bin 26671951 -> 26678225 bytes .../rest/CustomerResourceTest.java | 1 - .../rest/PictureResourceTest.java | 75 ++++++ .../json/CustomerResourceTest-dogetAll.json | 17 +- .../lib/controller/picture_controller.dart | 11 +- .../lib/dto/customer_dto.dart | 7 +- .../lib/pages/customer/customer_widget.dart | 71 +++++- .../pages/customer/picture_delete_dialog.dart | 53 ++++ .../customer/picture_fullscreen_dialog.dart | 54 ++++ .../lib/pages/customer/picture_widget.dart | 241 +++++++++++------- .../lib/pages/ui_utils/general_style.dart | 5 + .../lib/utils/global_router.dart | 10 - 16 files changed, 487 insertions(+), 155 deletions(-) create mode 100644 hartmann-foto-documentation-app/src/main/java/marketing/heyday/hartmann/fotodocumentation/core/utils/StorageUtils.java create mode 100644 hartmann-foto-documentation-docker/src/test/java/marketing/heyday/hartmann/fotodocumentation/rest/PictureResourceTest.java create mode 100644 hartmann-foto-documentation-frontend/lib/pages/customer/picture_delete_dialog.dart create mode 100644 hartmann-foto-documentation-frontend/lib/pages/customer/picture_fullscreen_dialog.dart diff --git a/hartmann-foto-documentation-app/src/main/java/marketing/heyday/hartmann/fotodocumentation/core/service/AbstractService.java b/hartmann-foto-documentation-app/src/main/java/marketing/heyday/hartmann/fotodocumentation/core/service/AbstractService.java index 0a1d7f7..8bbb990 100644 --- a/hartmann-foto-documentation-app/src/main/java/marketing/heyday/hartmann/fotodocumentation/core/service/AbstractService.java +++ b/hartmann-foto-documentation-app/src/main/java/marketing/heyday/hartmann/fotodocumentation/core/service/AbstractService.java @@ -1,12 +1,17 @@ package marketing.heyday.hartmann.fotodocumentation.core.service; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + import jakarta.annotation.Resource; import jakarta.ejb.EJB; import jakarta.ejb.EJBContext; import jakarta.ejb.SessionContext; import jakarta.persistence.EntityManager; +import jakarta.persistence.EntityNotFoundException; import jakarta.persistence.PersistenceContext; import marketing.heyday.hartmann.fotodocumentation.core.query.QueryService; +import marketing.heyday.hartmann.fotodocumentation.core.utils.StorageUtils.StorageState; /** * @@ -19,7 +24,8 @@ import marketing.heyday.hartmann.fotodocumentation.core.query.QueryService; */ public abstract class AbstractService { - + private static final Log LOG = LogFactory.getLog(AbstractService.class); + @Resource protected EJBContext ejbContext; @@ -31,5 +37,17 @@ public abstract class AbstractService { @EJB protected QueryService queryService; - + + protected StorageState delete(Class type, Long id) { + try { + T entity = entityManager.getReference(type, id); + entityManager.remove(entity); + entityManager.flush(); + return StorageState.OK; + } catch (EntityNotFoundException e) { + LOG.warn("Failed to delete entity " + type + " not found " + id, e); + ejbContext.setRollbackOnly(); + return StorageState.NOT_FOUND; + } + } } diff --git a/hartmann-foto-documentation-app/src/main/java/marketing/heyday/hartmann/fotodocumentation/core/service/PictureService.java b/hartmann-foto-documentation-app/src/main/java/marketing/heyday/hartmann/fotodocumentation/core/service/PictureService.java index 62213cd..671f567 100644 --- a/hartmann-foto-documentation-app/src/main/java/marketing/heyday/hartmann/fotodocumentation/core/service/PictureService.java +++ b/hartmann-foto-documentation-app/src/main/java/marketing/heyday/hartmann/fotodocumentation/core/service/PictureService.java @@ -4,7 +4,7 @@ import jakarta.annotation.security.PermitAll; import jakarta.ejb.LocalBean; import jakarta.ejb.Stateless; import marketing.heyday.hartmann.fotodocumentation.core.model.Picture; -import marketing.heyday.hartmann.fotodocumentation.rest.vo.PictureValue; +import marketing.heyday.hartmann.fotodocumentation.core.utils.StorageUtils.StorageState; /** * @@ -20,12 +20,7 @@ import marketing.heyday.hartmann.fotodocumentation.rest.vo.PictureValue; @PermitAll public class PictureService extends AbstractService { - public PictureValue get(Long id) { - Picture picture = entityManager.find(Picture.class, id); - if (picture == null) { - return null; - } - - return PictureValue.builder(picture); + public StorageState delete(Long id) { + return super.delete(Picture.class, id); } } diff --git a/hartmann-foto-documentation-app/src/main/java/marketing/heyday/hartmann/fotodocumentation/core/utils/StorageUtils.java b/hartmann-foto-documentation-app/src/main/java/marketing/heyday/hartmann/fotodocumentation/core/utils/StorageUtils.java new file mode 100644 index 0000000..431c4f6 --- /dev/null +++ b/hartmann-foto-documentation-app/src/main/java/marketing/heyday/hartmann/fotodocumentation/core/utils/StorageUtils.java @@ -0,0 +1,23 @@ +package marketing.heyday.hartmann.fotodocumentation.core.utils; + +/** + * + *

Copyright: Copyright (c) 2024

+ *

Company: heyday Marketing GmbH

+ * @author Patrick Verboom + * @version 1.0 + * + * created: 27 Jan 2026 + */ + +public class StorageUtils { + + public enum StorageState { + OK, + DUPLICATE, + FORBIDDEN, + NOT_FOUND, + ERROR, + ; + } +} diff --git a/hartmann-foto-documentation-app/src/main/java/marketing/heyday/hartmann/fotodocumentation/rest/PictureResource.java b/hartmann-foto-documentation-app/src/main/java/marketing/heyday/hartmann/fotodocumentation/rest/PictureResource.java index f9d2cea..265e773 100644 --- a/hartmann-foto-documentation-app/src/main/java/marketing/heyday/hartmann/fotodocumentation/rest/PictureResource.java +++ b/hartmann-foto-documentation-app/src/main/java/marketing/heyday/hartmann/fotodocumentation/rest/PictureResource.java @@ -1,25 +1,20 @@ package marketing.heyday.hartmann.fotodocumentation.rest; -import static marketing.heyday.hartmann.fotodocumentation.rest.jackson.ApplicationConfigApi.JSON_OUT; - import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.jboss.resteasy.annotations.GZIP; import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.ArraySchema; -import io.swagger.v3.oas.annotations.media.Content; -import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import jakarta.ejb.EJB; import jakarta.enterprise.context.RequestScoped; -import jakarta.ws.rs.GET; +import jakarta.ws.rs.DELETE; import jakarta.ws.rs.Path; import jakarta.ws.rs.PathParam; -import jakarta.ws.rs.Produces; import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.Response.ResponseBuilder; +import jakarta.ws.rs.core.Response.Status; import marketing.heyday.hartmann.fotodocumentation.core.service.PictureService; -import marketing.heyday.hartmann.fotodocumentation.rest.vo.PictureValue; +import marketing.heyday.hartmann.fotodocumentation.core.utils.StorageUtils.StorageState; /** * @@ -38,15 +33,25 @@ public class PictureResource { @EJB private PictureService pictureService; - @GZIP - @GET + @DELETE @Path("{id}") - @Produces(JSON_OUT) - @Operation(summary = "Get picture value") - @ApiResponse(responseCode = "200", description = "Successfully retrieved picture value", content = @Content(mediaType = JSON_OUT, array = @ArraySchema(schema = @Schema(implementation = PictureValue.class)))) - public Response doGetDetailCustomer(@PathParam("id") Long id) { - LOG.debug("Get Picture details for id " + id); - var retVal = pictureService.get(id); - return Response.ok().entity(retVal).build(); + @Operation(summary = "Delete picture from database") + @ApiResponse(responseCode = "200", description = "Task successfully deleted") + @ApiResponse(responseCode = "404", description = "Task not found") + @ApiResponse(responseCode = "403", description = "Insufficient permissions") + public Response doDelete(@PathParam("id") Long id) { + LOG.debug("Delete picture with id " + id); + var state = pictureService.delete(id); + return deleteResponse(state).build(); + } + + protected ResponseBuilder deleteResponse(StorageState state) { + return switch(state) { + case OK -> Response.status(Status.OK); + case DUPLICATE -> Response.status(Status.CONFLICT); + case NOT_FOUND -> Response.status(Status.NOT_FOUND); + case FORBIDDEN -> Response.status(Status.FORBIDDEN); + default -> Response.status(Status.INTERNAL_SERVER_ERROR); + }; } } diff --git a/hartmann-foto-documentation-docker/src/main/docker/hartmann-foto-documentation-web-1.0.0-SNAPSHOT.war b/hartmann-foto-documentation-docker/src/main/docker/hartmann-foto-documentation-web-1.0.0-SNAPSHOT.war index 133c95d81cb2601332161b886ef7dafa3e489c89..9d71d4a7f73919edf4143cc09fcf0d4cf62ea4ed 100644 GIT binary patch delta 64327 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

Pwal4>j|xTRgipwX;Rv0dVrY_xdJ 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 delta 58147 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 C>TV$b diff --git a/hartmann-foto-documentation-docker/src/test/java/marketing/heyday/hartmann/fotodocumentation/rest/CustomerResourceTest.java b/hartmann-foto-documentation-docker/src/test/java/marketing/heyday/hartmann/fotodocumentation/rest/CustomerResourceTest.java index 0388450..9d97bf3 100644 --- a/hartmann-foto-documentation-docker/src/test/java/marketing/heyday/hartmann/fotodocumentation/rest/CustomerResourceTest.java +++ b/hartmann-foto-documentation-docker/src/test/java/marketing/heyday/hartmann/fotodocumentation/rest/CustomerResourceTest.java @@ -27,7 +27,6 @@ import org.junit.jupiter.api.TestMethodOrder; public class CustomerResourceTest extends AbstractRestTest { private static final Log LOG = LogFactory.getLog(CustomerResourceTest.class); private static final String PATH = "api/customer"; - private static final String BASE_UPLOAD = "src/test/resources/upload/"; private static final String BASE_DOWNLOAD = "json/CustomerResourceTest-"; @BeforeAll diff --git a/hartmann-foto-documentation-docker/src/test/java/marketing/heyday/hartmann/fotodocumentation/rest/PictureResourceTest.java b/hartmann-foto-documentation-docker/src/test/java/marketing/heyday/hartmann/fotodocumentation/rest/PictureResourceTest.java new file mode 100644 index 0000000..3d35da3 --- /dev/null +++ b/hartmann-foto-documentation-docker/src/test/java/marketing/heyday/hartmann/fotodocumentation/rest/PictureResourceTest.java @@ -0,0 +1,75 @@ +package marketing.heyday.hartmann.fotodocumentation.rest; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.io.IOException; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.http.HttpResponse; +import org.apache.http.client.fluent.Request; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.MethodOrderer.OrderAnnotation; +import org.junit.jupiter.api.Order; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestMethodOrder; + +/** + * + *

Copyright: Copyright (c) 2024

+ *

Company: heyday Marketing GmbH

+ * @author
Patrick Verboom + * @version 1.0 + * + * created: 14 Nov 2024 + */ +@TestMethodOrder(OrderAnnotation.class) +public class PictureResourceTest extends AbstractRestTest { + private static final Log LOG = LogFactory.getLog(PictureResourceTest.class); + private static final String PATH = "api/picture"; + + @BeforeAll + public static void init() { + initDB(); + } + + @Test + @Order(1) + public void doDelete() throws IOException { + LOG.info("doDelete"); + + assertEquals(5, pictureCount()); + + String path = deploymentURL + PATH + "/1"; + Request request = Request.Delete(path).addHeader("Accept", "application/json; charset=utf-8") + .addHeader("Authorization", getAuthorization()); + + HttpResponse httpResponse = executeRequest(request); + int code = httpResponse.getStatusLine().getStatusCode(); + assertEquals(200, code); + + assertEquals(4, pictureCount()); + } + + @Test + @Order(1) + public void doDeleteNotFound() throws IOException { + LOG.info("doDeleteNotFound"); + + assertEquals(5, pictureCount()); + + String path = deploymentURL + PATH + "/6000"; + Request request = Request.Delete(path).addHeader("Accept", "application/json; charset=utf-8") + .addHeader("Authorization", getAuthorization()); + + HttpResponse httpResponse = executeRequest(request); + int code = httpResponse.getStatusLine().getStatusCode(); + assertEquals(404, code); + + assertEquals(5, pictureCount()); + } + + private int pictureCount() { + return getCount("select count(*) from picture"); + } +} diff --git a/hartmann-foto-documentation-docker/src/test/resources/json/CustomerResourceTest-dogetAll.json b/hartmann-foto-documentation-docker/src/test/resources/json/CustomerResourceTest-dogetAll.json index b5aab6b..3c12325 100644 --- a/hartmann-foto-documentation-docker/src/test/resources/json/CustomerResourceTest-dogetAll.json +++ b/hartmann-foto-documentation-docker/src/test/resources/json/CustomerResourceTest-dogetAll.json @@ -1,17 +1,20 @@ [ { - "name": "Meier Apotheke", - "customerNumber": "2345", - "amountOfPicture": 1 - }, - { + "id": 1, "name": "Müller Apotheke", "customerNumber": "1234", - "amountOfPicture": 2 + "lastUpdateDate": 1729764570000 }, { + "id": 2, + "name": "Meier Apotheke", + "customerNumber": "2345", + "lastUpdateDate": 1729764570000 + }, + { + "id": 3, "name": "Schmidt Apotheke", "customerNumber": "3456", - "amountOfPicture": 2 + "lastUpdateDate": 1729764570000 } ] \ No newline at end of file diff --git a/hartmann-foto-documentation-frontend/lib/controller/picture_controller.dart b/hartmann-foto-documentation-frontend/lib/controller/picture_controller.dart index af168ce..4f08a95 100644 --- a/hartmann-foto-documentation-frontend/lib/controller/picture_controller.dart +++ b/hartmann-foto-documentation-frontend/lib/controller/picture_controller.dart @@ -2,22 +2,15 @@ import 'package:fotodocumentation/controller/base_controller.dart'; import 'package:fotodocumentation/dto/customer_dto.dart'; abstract interface class PictureController { - Future get({required int id}); Future delete(PictureDto dto); } class PictureControllerImpl extends BaseController implements PictureController { final String path = "picture"; - @override - Future get({required int id}) { - String uriStr = '${uriUtils.getBaseUrl()}$path/$id'; - return runGetWithAuth(uriStr, (json) => PictureDto.fromJson(json)); - } - @override Future delete(PictureDto dto) { - // TODO: implement delete - throw UnimplementedError(); + String uriStr = '${uriUtils.getBaseUrl()}$path/${dto.id}'; + return runDeleteWithAuth(uriStr); } } diff --git a/hartmann-foto-documentation-frontend/lib/dto/customer_dto.dart b/hartmann-foto-documentation-frontend/lib/dto/customer_dto.dart index 8f78a18..0178b31 100644 --- a/hartmann-foto-documentation-frontend/lib/dto/customer_dto.dart +++ b/hartmann-foto-documentation-frontend/lib/dto/customer_dto.dart @@ -6,7 +6,7 @@ class CustomerListDto { final String customerNumber; final DateTime? lastUpdateDate; - CustomerListDto({required this.id, required this.name, required this.customerNumber, required this.lastUpdateDate}); + CustomerListDto({required this.id, required this.name, required this.customerNumber, this.lastUpdateDate}); /// Create from JSON response factory CustomerListDto.fromJson(Map json) { @@ -45,8 +45,10 @@ class PictureDto { final String image; final DateTime pictureDate; final String? username; + final CustomerListDto customerListDto; -PictureDto({required this.id, required this.comment, required this.category, required this.image, required this.pictureDate, required this.username}); + PictureDto( + {required this.id, required this.comment, required this.category, required this.image, required this.pictureDate, required this.username, required this.customerListDto}); /// Create from JSON response factory PictureDto.fromJson(Map json) { @@ -57,6 +59,7 @@ PictureDto({required this.id, required this.comment, required this.category, req image: json['image'] as String, pictureDate: DateTimeUtils.toDateTime(json['pictureDate']) ?? DateTime.now(), username: json['username'] as String?, + customerListDto: CustomerListDto.fromJson(json['customer']), ); } } diff --git a/hartmann-foto-documentation-frontend/lib/pages/customer/customer_widget.dart b/hartmann-foto-documentation-frontend/lib/pages/customer/customer_widget.dart index de766e3..b9b3749 100644 --- a/hartmann-foto-documentation-frontend/lib/pages/customer/customer_widget.dart +++ b/hartmann-foto-documentation-frontend/lib/pages/customer/customer_widget.dart @@ -1,6 +1,8 @@ import 'dart:convert' show base64Decode; import 'package:flutter/material.dart'; +import 'package:fotodocumentation/controller/picture_controller.dart'; +import 'package:fotodocumentation/pages/customer/picture_delete_dialog.dart'; import 'package:go_router/go_router.dart'; @@ -16,6 +18,7 @@ import 'package:fotodocumentation/pages/ui_utils/component/waiting_widget.dart'; import 'package:fotodocumentation/pages/ui_utils/general_style.dart'; import 'package:fotodocumentation/utils/di_container.dart'; import 'package:fotodocumentation/utils/global_router.dart'; +import 'package:fotodocumentation/pages/customer/picture_widget.dart'; class CustomerWidget extends StatefulWidget { final int customerId; @@ -27,6 +30,7 @@ class CustomerWidget extends StatefulWidget { class _CustomerWidgetState extends State { CustomerController get _customerController => DiContainer.get(); + PictureController get _pictureController => DiContainer.get(); GeneralStyle get _generalStyle => DiContainer.get(); late Future _dto; @@ -103,8 +107,10 @@ class _CustomerWidgetState extends State { ); } - Widget _customerWidget(CustomerDto dto) { - var dtos = dto.pictures; + Widget _customerWidget(CustomerDto customerDto) { + var pictureDtos = customerDto.pictures; + + pictureDtos.sort((a, b) => b.pictureDate.compareTo(a.pictureDate)); return Card( margin: EdgeInsets.zero, @@ -118,9 +124,9 @@ class _CustomerWidgetState extends State { Expanded( child: ListView.separated( padding: const EdgeInsets.only(top: 8.0), - itemCount: dtos.length, + itemCount: pictureDtos.length, itemBuilder: (BuildContext context, int index) { - return _tableDataRow(context, dtos[index]); + return _tableDataRow(context, customerDto, pictureDtos[index]); }, separatorBuilder: (BuildContext context, int index) => Divider(color: _generalStyle.secondaryWidgetBackgroundColor), ), @@ -173,21 +179,22 @@ class _CustomerWidgetState extends State { ), ), ), + const SizedBox(width: 48), ], ), ); } - Widget _tableDataRow(BuildContext context, PictureDto dto) { + Widget _tableDataRow(BuildContext context, CustomerDto customerDto, PictureDto pictureDto) { final dataStyle = TextStyle( fontFamily: _generalStyle.fontFamily, fontSize: 16.0, color: _generalStyle.secondaryTextLabelColor, ); - final dateStr = _dateFormat.format(dto.pictureDate); + final dateStr = _dateFormat.format(pictureDto.pictureDate); return InkWell( - onTap: () => _actionSelect(context, dto), + onTap: () => _actionSelect(context, customerDto, pictureDto), child: Padding( padding: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 8.0), child: Row( @@ -201,7 +208,7 @@ class _CustomerWidgetState extends State { child: ConstrainedBox( constraints: const BoxConstraints(maxWidth: 70, maxHeight: 70), child: Image.memory( - base64Decode(dto.image), + base64Decode(pictureDto.image), fit: BoxFit.contain, ), ), @@ -211,7 +218,7 @@ class _CustomerWidgetState extends State { flex: 3, child: Align( alignment: Alignment.centerLeft, - child: Text(dto.comment ?? "", style: dataStyle), + child: Text(pictureDto.comment ?? "", style: dataStyle), ), ), Expanded( @@ -221,14 +228,56 @@ class _CustomerWidgetState extends State { child: Text(dateStr, style: dataStyle), ), ), + SizedBox( + width: 48, + child: IconButton( + icon: Icon( + Icons.delete_outline, + color: _generalStyle.errorColor, + ), + onPressed: () => _actionDelete(context, customerDto, pictureDto), + ), + ), ], ), ), ); } - Future _actionSelect(BuildContext context, PictureDto dto) async { - context.go("${GlobalRouter.pathPicture}/${dto.id}"); + Future _actionDelete(BuildContext context, CustomerDto customerDto, PictureDto pictureDto) async { + final confirmed = await showDialog( + context: context, + builder: (BuildContext context) { + return PictureDeleteDialog(); + }, + ); + + if (confirmed == true) { + _pictureController.delete(pictureDto); + setState(() { + _dto = _customerController.get(id: widget.customerId); + }); + } + } + + Future _actionSelect(BuildContext context, CustomerDto customerDto, PictureDto pictureDto) async { + showDialog( + context: context, + builder: (BuildContext context) { + return Dialog( + backgroundColor: _generalStyle.pageBackgroundColor, + insetPadding: const EdgeInsets.all(24), + child: ClipRRect( + borderRadius: BorderRadius.circular(12), + child: SizedBox( + width: MediaQuery.of(context).size.width * 0.9, + height: MediaQuery.of(context).size.height * 0.9, + child: PictureWidget(customerDto: customerDto, pictureDto: pictureDto), + ), + ), + ); + }, + ); } Widget _backButton(BuildContext context) { diff --git a/hartmann-foto-documentation-frontend/lib/pages/customer/picture_delete_dialog.dart b/hartmann-foto-documentation-frontend/lib/pages/customer/picture_delete_dialog.dart new file mode 100644 index 0000000..e501113 --- /dev/null +++ b/hartmann-foto-documentation-frontend/lib/pages/customer/picture_delete_dialog.dart @@ -0,0 +1,53 @@ +import 'package:flutter/material.dart'; +import 'package:fotodocumentation/l10n/app_localizations.dart'; +import 'package:fotodocumentation/pages/ui_utils/general_style.dart'; +import 'package:fotodocumentation/utils/di_container.dart'; + +class PictureDeleteDialog extends StatelessWidget { + GeneralStyle get _generalStyle => DiContainer.get(); + + const PictureDeleteDialog({super.key}); + + @override + Widget build(BuildContext context) { + return AlertDialog( + title: Text( + AppLocalizations.of(context)!.deleteDialogTitle, + style: TextStyle( + fontFamily: _generalStyle.fontFamily, + fontWeight: FontWeight.bold, + color: _generalStyle.secondaryWidgetBackgroundColor, + ), + ), + content: Text( + AppLocalizations.of(context)!.deleteDialogText, + style: TextStyle( + fontFamily: _generalStyle.fontFamily, + color: _generalStyle.secondaryTextLabelColor, + ), + ), + actions: [ + TextButton( + onPressed: () => Navigator.of(context).pop(false), + child: Text( + AppLocalizations.of(context)!.deleteDialogButtonCancel, + style: TextStyle( + fontFamily: _generalStyle.fontFamily, + color: _generalStyle.secondaryTextLabelColor, + ), + ), + ), + TextButton( + onPressed: () => Navigator.of(context).pop(true), + child: Text( + AppLocalizations.of(context)!.deleteDialogButtonApprove, + style: TextStyle( + fontFamily: _generalStyle.fontFamily, + color: _generalStyle.errorColor, + ), + ), + ), + ], + ); + } +} diff --git a/hartmann-foto-documentation-frontend/lib/pages/customer/picture_fullscreen_dialog.dart b/hartmann-foto-documentation-frontend/lib/pages/customer/picture_fullscreen_dialog.dart new file mode 100644 index 0000000..6b7fdf1 --- /dev/null +++ b/hartmann-foto-documentation-frontend/lib/pages/customer/picture_fullscreen_dialog.dart @@ -0,0 +1,54 @@ +import 'dart:convert' show base64Decode; + +import 'package:flutter/material.dart'; +import 'package:fotodocumentation/dto/customer_dto.dart'; +import 'package:fotodocumentation/pages/ui_utils/general_style.dart'; +import 'package:fotodocumentation/utils/di_container.dart'; + +class PictureFullscreenDialog extends StatelessWidget { + GeneralStyle get _generalStyle => DiContainer.get(); + + final PictureDto dto; + + const PictureFullscreenDialog({super.key, required this.dto}); + + @override + Widget build(BuildContext context) { + return Dialog( + backgroundColor: _generalStyle.pageBackgroundColor, + insetPadding: const EdgeInsets.all(24), + child: ClipRRect( + borderRadius: BorderRadius.circular(12), + child: SizedBox( + width: MediaQuery.of(context).size.width * 0.9, + height: MediaQuery.of(context).size.height * 0.9, + child: Stack( + fit: StackFit.expand, + children: [ + InteractiveViewer( + panEnabled: true, + scaleEnabled: true, + minScale: 0.5, + maxScale: 5.0, + child: Center( + child: Image.memory( + base64Decode(dto.image), + fit: BoxFit.contain, + ), + ), + ), + Positioned( + top: 16, + right: 16, + child: IconButton( + icon: Icon(Icons.close, color: _generalStyle.primaryButtonBackgroundColor, size: 32), + onPressed: () => Navigator.of(context).pop(), + ), + ), + ], + ), + ), + ), + ); + } +} diff --git a/hartmann-foto-documentation-frontend/lib/pages/customer/picture_widget.dart b/hartmann-foto-documentation-frontend/lib/pages/customer/picture_widget.dart index 30877b7..d30537a 100644 --- a/hartmann-foto-documentation-frontend/lib/pages/customer/picture_widget.dart +++ b/hartmann-foto-documentation-frontend/lib/pages/customer/picture_widget.dart @@ -1,31 +1,25 @@ import 'dart:convert' show base64Decode; import 'package:flutter/material.dart'; -import 'package:fotodocumentation/controller/picture_controller.dart'; - -import 'package:intl/intl.dart'; - -import 'package:fotodocumentation/controller/base_controller.dart'; import 'package:fotodocumentation/dto/customer_dto.dart'; -import 'package:fotodocumentation/l10n/app_localizations.dart'; -import 'package:fotodocumentation/pages/ui_utils/component/general_error_widget.dart'; -import 'package:fotodocumentation/pages/ui_utils/component/waiting_widget.dart'; +import 'package:fotodocumentation/pages/customer/picture_fullscreen_dialog.dart'; import 'package:fotodocumentation/pages/ui_utils/general_style.dart'; import 'package:fotodocumentation/utils/di_container.dart'; +import 'package:intl/intl.dart'; class PictureWidget extends StatefulWidget { - final int id; - const PictureWidget({super.key, required this.id}); + final CustomerDto customerDto; + final PictureDto pictureDto; + const PictureWidget({super.key, required this.customerDto, required this.pictureDto}); @override State createState() => _PictureWidgetState(); } class _PictureWidgetState extends State { - PictureController get _pictureController => DiContainer.get(); GeneralStyle get _generalStyle => DiContainer.get(); - late Future _dto; + late PictureDto _selectedPicture; late DateFormat _dateFormat; final ScrollController _commentScrollController = ScrollController(); @@ -33,7 +27,7 @@ class _PictureWidgetState extends State { void initState() { super.initState(); _dateFormat = DateFormat('dd MMMM yyyy'); - _dto = _pictureController.get(id: widget.id); + _selectedPicture = widget.pictureDto; } @override @@ -44,91 +38,164 @@ class _PictureWidgetState extends State { @override Widget build(BuildContext context) { - return Scaffold( - body: Container( - color: _generalStyle.pageBackgroundColor, - child: Padding( - padding: const EdgeInsets.only(top: 8.0, left: 50.0, right: 50.0, bottom: 8.0), - child: _body(context), + final pictures = widget.customerDto.pictures; + final currentIndex = pictures.indexWhere((p) => p.id == _selectedPicture.id); + final hasPrevious = currentIndex > 0; + final hasNext = currentIndex < pictures.length - 1; + + return Stack( + children: [ + Container( + width: double.infinity, + height: double.infinity, + color: _generalStyle.pageBackgroundColor, + child: Padding( + padding: const EdgeInsets.only(top: 50.0, left: 50.0, right: 50.0, bottom: 8.0), + child: _body(context), + ), ), - ), + // Left navigation button + if (hasPrevious) + Positioned( + left: 0, + top: 0, + bottom: 0, + child: GestureDetector( + onTap: () => _navigateToPicture(currentIndex - 1), + child: MouseRegion( + cursor: SystemMouseCursors.click, + child: Container( + width: 50, + color: Colors.transparent, + child: Center( + child: Container( + decoration: BoxDecoration( + color: _generalStyle.primaryButtonBackgroundColor, + shape: BoxShape.circle, + ), + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Icon( + Icons.chevron_left, + color: _generalStyle.primaryButtonTextColor, + size: 32, + ), + ), + ), + ), + ), + ), + ), + ), + // Right navigation button + if (hasNext) + Positioned( + right: 0, + top: 0, + bottom: 0, + child: GestureDetector( + onTap: () => _navigateToPicture(currentIndex + 1), + child: MouseRegion( + cursor: SystemMouseCursors.click, + child: Container( + width: 50, + color: Colors.transparent, + child: Center( + child: Container( + decoration: BoxDecoration( + color: _generalStyle.primaryButtonBackgroundColor, + shape: BoxShape.circle, + ), + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Icon( + Icons.chevron_right, + color: _generalStyle.primaryButtonTextColor, + size: 32, + ), + ), + ), + ), + ), + ), + ), + ), + // Close button + Positioned( + top: 16, + right: 16, + child: Container( + decoration: BoxDecoration( + color: _generalStyle.primaryButtonBackgroundColor, + shape: BoxShape.circle, + ), + child: IconButton( + icon: Icon(Icons.close, color: _generalStyle.primaryButtonTextColor, size: 24), + onPressed: () => Navigator.of(context).pop(), + ), + ), + ), + ], ); } - Widget _body(BuildContext context) { - return FutureBuilder( - future: _dto, - builder: (BuildContext context, AsyncSnapshot snapshot) { - if (snapshot.connectionState != ConnectionState.done) { - return const WaitingWidget(); - } - if (snapshot.hasData) { - PictureDto? dto = snapshot.data; + void _navigateToPicture(int index) { + final pictures = widget.customerDto.pictures; + if (index >= 0 && index < pictures.length) { + setState(() { + _selectedPicture = pictures[index]; + }); + } + } - return _mainWidget(dto); - } else if (snapshot.hasError) { - var error = snapshot.error; - return (error is ServerError) ? GeneralErrorWidget.fromServerError(error) : GeneralErrorWidget(error: snapshot.error.toString()); - } - return const WaitingWidget(); + Widget _body(BuildContext context) { + return LayoutBuilder( + builder: (context, constraints) { + final isNarrow = constraints.maxWidth < 800; + return SingleChildScrollView( + child: isNarrow + ? Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _imageWidget(_selectedPicture), + const SizedBox(height: 32), + _contentWidget(_selectedPicture), + ], + ) + : Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _imageWidget(_selectedPicture), + const SizedBox(width: 32), + Expanded(child: _contentWidget(_selectedPicture)), + ], + ), + ); }, ); } - Widget _mainWidget(PictureDto? dto) { - if (dto == null) { - return Text( - AppLocalizations.of(context)!.customerWidgetNotFound, - style: TextStyle( - fontFamily: _generalStyle.fontFamily, - fontWeight: FontWeight.bold, - fontSize: 20, - color: _generalStyle.secondaryWidgetBackgroundColor, - ), - ); - } - - return Card( - margin: EdgeInsets.zero, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(12), - ), - child: Padding( - padding: const EdgeInsets.all(24.0), - child: LayoutBuilder( - builder: (context, constraints) { - final isNarrow = constraints.maxWidth < 800; - return SingleChildScrollView( - child: isNarrow - ? Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - _imageWidget(dto), - const SizedBox(height: 32), - _contentWidget(dto), - ], - ) - : Row( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - _imageWidget(dto), - const SizedBox(width: 32), - _contentWidget(dto), - ], - ), - ); - }, + Widget _imageWidget(PictureDto dto) { + return GestureDetector( + onTap: () => _showFullscreenImage(dto), + child: MouseRegion( + cursor: SystemMouseCursors.click, + child: Image.memory( + base64Decode(dto.image), + fit: BoxFit.contain, ), ), ); } - Widget _imageWidget(PictureDto dto) { - return Image.memory( - base64Decode(dto.image), - fit: BoxFit.contain, + void _showFullscreenImage(PictureDto dto) { + showDialog( + context: context, + builder: (BuildContext context) { + return PictureFullscreenDialog(dto: dto); + }, ); } @@ -167,7 +234,7 @@ class _PictureWidgetState extends State { Padding( padding: const EdgeInsets.only(top: 4.0), child: Text( - "Name of apotheke", + dto.customerListDto.name, style: contentStyle, ), ), @@ -181,7 +248,7 @@ class _PictureWidgetState extends State { Padding( padding: const EdgeInsets.only(top: 4.0), child: Text( - "123445587474873", + dto.customerListDto.customerNumber, style: contentStyle, ), ), @@ -209,7 +276,7 @@ class _PictureWidgetState extends State { Padding( padding: const EdgeInsets.only(top: 4.0), child: Container( - width: 300, + width: double.infinity, height: 150, decoration: BoxDecoration( border: Border.all(color: _generalStyle.secondaryTextLabelColor.withValues(alpha: 0.3)), diff --git a/hartmann-foto-documentation-frontend/lib/pages/ui_utils/general_style.dart b/hartmann-foto-documentation-frontend/lib/pages/ui_utils/general_style.dart index 99da76d..546db65 100644 --- a/hartmann-foto-documentation-frontend/lib/pages/ui_utils/general_style.dart +++ b/hartmann-foto-documentation-frontend/lib/pages/ui_utils/general_style.dart @@ -14,6 +14,8 @@ abstract interface class GeneralStyle { Color get pageBackgroundColor; + Color get primaryCardColor; + Color get errorColor; String get fontFamily; @@ -44,6 +46,9 @@ class GeneralStyleImpl implements GeneralStyle { @override Color get primaryButtonTextColor => Colors.white; + @override + Color get primaryCardColor => Colors.white; + @override Color get pageBackgroundColor => const Color(0xFFF5F5F5); diff --git a/hartmann-foto-documentation-frontend/lib/utils/global_router.dart b/hartmann-foto-documentation-frontend/lib/utils/global_router.dart index 37d99d3..e0c403b 100644 --- a/hartmann-foto-documentation-frontend/lib/utils/global_router.dart +++ b/hartmann-foto-documentation-frontend/lib/utils/global_router.dart @@ -3,7 +3,6 @@ import 'package:flutter/material.dart'; import 'package:fotodocumentation/main.dart'; import 'package:fotodocumentation/pages/customer/customer_list_widget.dart'; import 'package:fotodocumentation/pages/customer/customer_widget.dart'; -import 'package:fotodocumentation/pages/customer/picture_widget.dart'; import 'package:fotodocumentation/pages/login/login_widget.dart'; import 'package:fotodocumentation/utils/di_container.dart'; import 'package:fotodocumentation/utils/login_credentials.dart'; @@ -17,7 +16,6 @@ class GlobalRouter { static final String pathHome = "/home"; static final String pathCustomer = "/customer"; - static final String pathPicture = "/picture"; static final String pathLogin = "/login"; static final GoRouter router = createRouter(pathHome); @@ -47,14 +45,6 @@ class GlobalRouter { return CustomerWidget(customerId: id ?? -1); }, ), - GoRoute( - path: "$pathPicture/:id", - builder: (context, state) { - var idStr = state.pathParameters['id']; - var id = idStr == null ? null : int.tryParse(idStr); - return PictureWidget(id: id ?? -1); - }, - ), ], redirect: (context, state) { var uriStr = state.uri.toString();