diff --git a/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/Builders/Services/BuilderService.java b/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/Builders/Services/BuilderService.java index 9251a35..34c1a5a 100644 --- a/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/Builders/Services/BuilderService.java +++ b/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/Builders/Services/BuilderService.java @@ -69,6 +69,15 @@ public class BuilderService { executeDump(true); // ADD OTHER SERVICE +addCustomMenu( "Guestuser","Guestuser", "Transcations"); + + +addCustomMenu( "Coupon","Coupon", "Transcations"); + + +addCustomMenu( "Feature","Feature", "Transcations"); + + addCustomMenu( "Products","Products", "Transcations"); diff --git a/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Controllers/CouponController.java b/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Controllers/CouponController.java new file mode 100644 index 0000000..8b94888 --- /dev/null +++ b/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Controllers/CouponController.java @@ -0,0 +1,99 @@ +package com.realnet.taxi_rental.Controllers; +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; + import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import com.fasterxml.jackson.core.JsonProcessingException; +import org.springframework.web.bind.annotation.CrossOrigin; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.realnet.config.EmailService; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserServiceImpl; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.data.domain.*; +import com.realnet.fnd.response.EntityResponse; +import org.springframework.http.*; +import org.springframework.beans.factory.annotation.*; +import com.realnet.taxi_rental.Entity.Coupon; +import com.realnet.taxi_rental.Services.CouponService ; + + + + + + +@RequestMapping(value = "/Coupon") + @CrossOrigin("*") +@RestController +public class CouponController { + @Autowired + private CouponService Service; + +@Value("${projectPath}") + private String projectPath; + + + + + + + + @PostMapping("/Coupon") + public Coupon Savedata(@RequestBody Coupon data) { + Coupon save = Service.Savedata(data) ; + + + + + + System.out.println("data saved..." + save); + + return save; + } +@PutMapping("/Coupon/{id}") + public Coupon update(@RequestBody Coupon data,@PathVariable Integer id ) { + Coupon update = Service.update(data,id); + System.out.println("data update..." + update); + return update; + } +// get all with pagination + @GetMapping("/Coupon/getall/page") + public Page getall(@RequestParam(value = "page", required = false) Integer page, + @RequestParam(value = "size", required = false) Integer size) { + Pageable paging = PageRequest.of(page, size); + Page get = Service.getAllWithPagination(paging); + + return get; + + } + @GetMapping("/Coupon") + public List getdetails() { + List get = Service.getdetails(); + return get; +} +// get all without authentication + + @GetMapping("/token/Coupon") + public List getallwioutsec() { + List get = Service.getdetails(); + return get; +} +@GetMapping("/Coupon/{id}") + public Coupon getdetailsbyId(@PathVariable Integer id ) { + Coupon get = Service.getdetailsbyId(id); + return get; + } +@DeleteMapping("/Coupon/{id}") + public ResponseEntity delete_by_id(@PathVariable Integer id ) { + Service.delete_by_id(id); + return new ResponseEntity<>(new EntityResponse("Deleted"), HttpStatus.OK); + + } + + + + + + + +} \ No newline at end of file diff --git a/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Controllers/GuestuserController.java b/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Controllers/GuestuserController.java new file mode 100644 index 0000000..0136dc3 --- /dev/null +++ b/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Controllers/GuestuserController.java @@ -0,0 +1,131 @@ +package com.realnet.taxi_rental.Controllers; +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; + import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import com.fasterxml.jackson.core.JsonProcessingException; +import org.springframework.web.bind.annotation.CrossOrigin; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.realnet.config.EmailService; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserServiceImpl; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.data.domain.*; +import com.realnet.fnd.response.EntityResponse; +import org.springframework.http.*; +import org.springframework.beans.factory.annotation.*; +import com.realnet.taxi_rental.Entity.Guestuser; +import com.realnet.taxi_rental.Services.GuestuserService ; + + + + + + + + + + + + + + +@RequestMapping(value = "/Guestuser") + @CrossOrigin("*") +@RestController +public class GuestuserController { + @Autowired + private GuestuserService Service; + +@Value("${projectPath}") + private String projectPath; + + + + + + + + + + + + + + + + @PostMapping("/Guestuser") + public Guestuser Savedata(@RequestBody Guestuser data) { + Guestuser save = Service.Savedata(data) ; + + + + + + + + + + + + + + System.out.println("data saved..." + save); + + return save; + } +@PutMapping("/Guestuser/{id}") + public Guestuser update(@RequestBody Guestuser data,@PathVariable Integer id ) { + Guestuser update = Service.update(data,id); + System.out.println("data update..." + update); + return update; + } +// get all with pagination + @GetMapping("/Guestuser/getall/page") + public Page getall(@RequestParam(value = "page", required = false) Integer page, + @RequestParam(value = "size", required = false) Integer size) { + Pageable paging = PageRequest.of(page, size); + Page get = Service.getAllWithPagination(paging); + + return get; + + } + @GetMapping("/Guestuser") + public List getdetails() { + List get = Service.getdetails(); + return get; +} +// get all without authentication + + @GetMapping("/token/Guestuser") + public List getallwioutsec() { + List get = Service.getdetails(); + return get; +} +@GetMapping("/Guestuser/{id}") + public Guestuser getdetailsbyId(@PathVariable Integer id ) { + Guestuser get = Service.getdetailsbyId(id); + return get; + } +@DeleteMapping("/Guestuser/{id}") + public ResponseEntity delete_by_id(@PathVariable Integer id ) { + Service.delete_by_id(id); + return new ResponseEntity<>(new EntityResponse("Deleted"), HttpStatus.OK); + + } + + + + + + + + + + + + + + + +} \ No newline at end of file diff --git a/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Controllers/tokenFree_CouponController.java b/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Controllers/tokenFree_CouponController.java new file mode 100644 index 0000000..bb98b6d --- /dev/null +++ b/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Controllers/tokenFree_CouponController.java @@ -0,0 +1,99 @@ +package com.realnet.taxi_rental.Controllers; +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; + import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import com.fasterxml.jackson.core.JsonProcessingException; +import org.springframework.web.bind.annotation.CrossOrigin; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.realnet.config.EmailService; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserServiceImpl; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.data.domain.*; +import com.realnet.fnd.response.EntityResponse; +import org.springframework.http.*; +import org.springframework.beans.factory.annotation.*; +import com.realnet.taxi_rental.Entity.Coupon; +import com.realnet.taxi_rental.Services.CouponService ; + + + + + + +@RequestMapping(value = "/token/Coupon") + @CrossOrigin("*") +@RestController +public class tokenFree_CouponController { + @Autowired + private CouponService Service; + +@Value("${projectPath}") + private String projectPath; + + + + + + + + @PostMapping("/Coupon") + public Coupon Savedata(@RequestBody Coupon data) { + Coupon save = Service.Savedata(data) ; + + + + + + System.out.println("data saved..." + save); + + return save; + } +@PutMapping("/Coupon/{id}") + public Coupon update(@RequestBody Coupon data,@PathVariable Integer id ) { + Coupon update = Service.update(data,id); + System.out.println("data update..." + update); + return update; + } +// get all with pagination + @GetMapping("/Coupon/getall/page") + public Page getall(@RequestParam(value = "page", required = false) Integer page, + @RequestParam(value = "size", required = false) Integer size) { + Pageable paging = PageRequest.of(page, size); + Page get = Service.getAllWithPagination(paging); + + return get; + + } + @GetMapping("/Coupon") + public List getdetails() { + List get = Service.getdetails(); + return get; +} +// get all without authentication + + @GetMapping("/token/Coupon") + public List getallwioutsec() { + List get = Service.getdetails(); + return get; +} +@GetMapping("/Coupon/{id}") + public Coupon getdetailsbyId(@PathVariable Integer id ) { + Coupon get = Service.getdetailsbyId(id); + return get; + } +@DeleteMapping("/Coupon/{id}") + public ResponseEntity delete_by_id(@PathVariable Integer id ) { + Service.delete_by_id(id); + return new ResponseEntity<>(new EntityResponse("Deleted"), HttpStatus.OK); + + } + + + + + + + +} \ No newline at end of file diff --git a/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Controllers/tokenFree_GuestuserController.java b/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Controllers/tokenFree_GuestuserController.java new file mode 100644 index 0000000..4c58acb --- /dev/null +++ b/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Controllers/tokenFree_GuestuserController.java @@ -0,0 +1,131 @@ +package com.realnet.taxi_rental.Controllers; +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; + import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import com.fasterxml.jackson.core.JsonProcessingException; +import org.springframework.web.bind.annotation.CrossOrigin; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.realnet.config.EmailService; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserServiceImpl; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.data.domain.*; +import com.realnet.fnd.response.EntityResponse; +import org.springframework.http.*; +import org.springframework.beans.factory.annotation.*; +import com.realnet.taxi_rental.Entity.Guestuser; +import com.realnet.taxi_rental.Services.GuestuserService ; + + + + + + + + + + + + + + +@RequestMapping(value = "/token/Guestuser") + @CrossOrigin("*") +@RestController +public class tokenFree_GuestuserController { + @Autowired + private GuestuserService Service; + +@Value("${projectPath}") + private String projectPath; + + + + + + + + + + + + + + + + @PostMapping("/Guestuser") + public Guestuser Savedata(@RequestBody Guestuser data) { + Guestuser save = Service.Savedata(data) ; + + + + + + + + + + + + + + System.out.println("data saved..." + save); + + return save; + } +@PutMapping("/Guestuser/{id}") + public Guestuser update(@RequestBody Guestuser data,@PathVariable Integer id ) { + Guestuser update = Service.update(data,id); + System.out.println("data update..." + update); + return update; + } +// get all with pagination + @GetMapping("/Guestuser/getall/page") + public Page getall(@RequestParam(value = "page", required = false) Integer page, + @RequestParam(value = "size", required = false) Integer size) { + Pageable paging = PageRequest.of(page, size); + Page get = Service.getAllWithPagination(paging); + + return get; + + } + @GetMapping("/Guestuser") + public List getdetails() { + List get = Service.getdetails(); + return get; +} +// get all without authentication + + @GetMapping("/token/Guestuser") + public List getallwioutsec() { + List get = Service.getdetails(); + return get; +} +@GetMapping("/Guestuser/{id}") + public Guestuser getdetailsbyId(@PathVariable Integer id ) { + Guestuser get = Service.getdetailsbyId(id); + return get; + } +@DeleteMapping("/Guestuser/{id}") + public ResponseEntity delete_by_id(@PathVariable Integer id ) { + Service.delete_by_id(id); + return new ResponseEntity<>(new EntityResponse("Deleted"), HttpStatus.OK); + + } + + + + + + + + + + + + + + + +} \ No newline at end of file diff --git a/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Entity/Coupon.java b/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Entity/Coupon.java new file mode 100644 index 0000000..1f021bc --- /dev/null +++ b/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Entity/Coupon.java @@ -0,0 +1,33 @@ +package com.realnet.taxi_rental.Entity; + import lombok.*; +import com.realnet.WhoColumn.Entity.Extension; + import javax.persistence.*; + import java.time.LocalDateTime; + import java.util.*; + + + + + + + @Entity + @Data + public class Coupon extends Extension { + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + +private String name; + +@Column(length = 2000) +private String description; + +private Boolean active; + + +} diff --git a/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Entity/Guestuser.java b/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Entity/Guestuser.java new file mode 100644 index 0000000..9682d1d --- /dev/null +++ b/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Entity/Guestuser.java @@ -0,0 +1,48 @@ +package com.realnet.taxi_rental.Entity; + import lombok.*; +import com.realnet.WhoColumn.Entity.Extension; + import javax.persistence.*; + import java.time.LocalDateTime; + import java.util.*; + + + + + + + + + + + + + + + @Entity + @Data + public class Guestuser extends Extension { + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + +private String fullname; + +private Boolean active; + +private String macaddress; + +private String email; + + private String mob_no; + +private String dateofbirth; + +private String driving_license_no; + + +} diff --git a/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Repository/CouponRepository.java b/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Repository/CouponRepository.java new file mode 100644 index 0000000..01b214b --- /dev/null +++ b/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Repository/CouponRepository.java @@ -0,0 +1,30 @@ +package com.realnet.taxi_rental.Repository; + + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import org.springframework.stereotype.Repository; +import java.util.*; + + + + + + + + + +import com.realnet.taxi_rental.Entity.Coupon; + +@Repository +public interface CouponRepository extends JpaRepository { + +@Query(value = "select * from coupon where created_by=?1", nativeQuery = true) + List findAll(Long creayedBy); + +@Query(value = "select * from coupon where created_by=?1", nativeQuery = true) + Page findAll( Long creayedBy,Pageable page); +} \ No newline at end of file diff --git a/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Repository/GuestuserRepository.java b/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Repository/GuestuserRepository.java new file mode 100644 index 0000000..9657937 --- /dev/null +++ b/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Repository/GuestuserRepository.java @@ -0,0 +1,38 @@ +package com.realnet.taxi_rental.Repository; + + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import org.springframework.stereotype.Repository; +import java.util.*; + + + + + + + + + + + + + + + + + +import com.realnet.taxi_rental.Entity.Guestuser; + +@Repository +public interface GuestuserRepository extends JpaRepository { + +@Query(value = "select * from guestuser where created_by=?1", nativeQuery = true) + List findAll(Long creayedBy); + +@Query(value = "select * from guestuser where created_by=?1", nativeQuery = true) + Page findAll( Long creayedBy,Pageable page); +} \ No newline at end of file diff --git a/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Services/Car_category_ListFilter1Service.java b/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Services/Car_category_ListFilter1Service.java index b7388c6..114e34a 100644 --- a/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Services/Car_category_ListFilter1Service.java +++ b/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Services/Car_category_ListFilter1Service.java @@ -21,15 +21,13 @@ private Car_categoryRepository Repository; List list= Repository.findAll(); ArrayList l = new ArrayList<>(); for (Car_category data : list) { -boolean isactive = data.getActive(); - - if (isactive) {{ +{ Car_category_ListFilter1 dummy = new Car_category_ListFilter1(); dummy.setId(data.getId()); dummy.setName(data.getName()); dummy.setDescription(data.getDescription()); l.add(dummy); -}} +} } return l;} @@ -39,15 +37,13 @@ return l;} List list= Repository.findAll(); ArrayList l = new ArrayList<>(); for (Car_category data : list) { -boolean isactive = data.getActive(); - - if (isactive) {{ +{ Car_category_ListFilter1 dummy = new Car_category_ListFilter1(); dummy.setId(data.getId()); dummy.setName(data.getName()); dummy.setDescription(data.getDescription()); l.add(dummy); -}} +} } return l;} } \ No newline at end of file diff --git a/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Services/CouponService.java b/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Services/CouponService.java new file mode 100644 index 0000000..4c19ea9 --- /dev/null +++ b/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Services/CouponService.java @@ -0,0 +1,93 @@ +package com.realnet.taxi_rental.Services; +import com.realnet.taxi_rental.Repository.CouponRepository; +import com.realnet.taxi_rental.Entity.Coupon +;import java.util.*; + +import org.springframework.beans.factory.annotation.Autowired; +import com.realnet.SequenceGenerator.Service.SequenceService; +import org.springframework.data.domain.Page; +import com.realnet.realm.Entity.Realm; +import com.realnet.realm.Services.RealmService; +import org.springframework.data.domain.Pageable; +import org.springframework.http.*; +import com.realnet.users.service1.AppUserServiceImpl; +import com.realnet.users.entity1.AppUser; + + + + + + + import org.springframework.stereotype.Service; + +@Service + public class CouponService { +@Autowired +private CouponRepository Repository; + @Autowired + private AppUserServiceImpl userService; +@Autowired + private RealmService realmService; + + + + + +public Coupon Savedata(Coupon data) { + + + + + + + data.setUpdatedBy(getUser().getUserId()); + data.setCreatedBy(getUser().getUserId()); + data.setAccountId(getUser().getAccount().getAccount_id()); +Coupon save = Repository.save(data); + return save; + } + + +// get all with pagination + public Page getAllWithPagination(Pageable page) { + return Repository.findAll( getUser().getUserId(),page); + } +public List getdetails() { + List realm = realmService.findByUserId(getUser().getUserId()); +List all = Repository.findAll(getUser().getUserId()); + + return all ; } + + +public Coupon getdetailsbyId(Integer id) { + return Repository.findById(id).get(); + } + + + public void delete_by_id(Integer id) { + Repository.deleteById(id); +} + + +public Coupon update(Coupon data,Integer id) { + Coupon old = Repository.findById(id).get(); +old.setName(data.getName()); + +old.setDescription(data.getDescription()); + +old.setActive (data.getActive()); + +final Coupon test = Repository.save(old); + data.setUpdatedBy(getUser().getUserId()); + return test;} + + + + + + + public AppUser getUser() { + AppUser user = userService.getLoggedInUser(); + return user; + + }} diff --git a/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Services/Custom_setting_ListFilter1Service.java b/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Services/Custom_setting_ListFilter1Service.java index 8a82754..b811665 100644 --- a/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Services/Custom_setting_ListFilter1Service.java +++ b/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Services/Custom_setting_ListFilter1Service.java @@ -21,9 +21,7 @@ private Custom_settingRepository Repository; List list= Repository.findAll(); ArrayList l = new ArrayList<>(); for (Custom_setting data : list) { -boolean isactive = data.getActive(); - - if (isactive) {{ +{ Custom_setting_ListFilter1 dummy = new Custom_setting_ListFilter1(); dummy.setId(data.getId()); dummy.setName(data.getName()); @@ -35,7 +33,7 @@ Custom_setting_ListFilter1 dummy = new Custom_setting_ListFilter1(); dummy.setPst_rate(data.getPst_rate()); dummy.setAge_threshold(data.getAge_threshold()); l.add(dummy); -}} +} } return l;} @@ -45,9 +43,7 @@ return l;} List list= Repository.findAll(); ArrayList l = new ArrayList<>(); for (Custom_setting data : list) { -boolean isactive = data.getActive(); - - if (isactive) {{ +{ Custom_setting_ListFilter1 dummy = new Custom_setting_ListFilter1(); dummy.setId(data.getId()); dummy.setName(data.getName()); @@ -59,7 +55,7 @@ Custom_setting_ListFilter1 dummy = new Custom_setting_ListFilter1(); dummy.setPst_rate(data.getPst_rate()); dummy.setAge_threshold(data.getAge_threshold()); l.add(dummy); -}} +} } return l;} } \ No newline at end of file diff --git a/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Services/Feature_ListFilter1Service.java b/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Services/Feature_ListFilter1Service.java index 6e4f456..06df833 100644 --- a/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Services/Feature_ListFilter1Service.java +++ b/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Services/Feature_ListFilter1Service.java @@ -21,9 +21,9 @@ private FeatureRepository Repository; List list= Repository.findAll(); ArrayList l = new ArrayList<>(); for (Feature data : list) { -boolean isactive = data.getActive(); +Boolean isActive = data.getActive(); - if (isactive) {{ + if (Boolean.TRUE.equals(isActive)) {{ Feature_ListFilter1 dummy = new Feature_ListFilter1(); dummy.setId(data.getId()); dummy.setName(data.getName()); @@ -39,9 +39,9 @@ return l;} List list= Repository.findAll(); ArrayList l = new ArrayList<>(); for (Feature data : list) { -boolean isactive = data.getActive(); +Boolean isActive = data.getActive(); - if (isactive) {{ + if (Boolean.TRUE.equals(isActive)) {{ Feature_ListFilter1 dummy = new Feature_ListFilter1(); dummy.setId(data.getId()); dummy.setName(data.getName()); diff --git a/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Services/GuestuserService.java b/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Services/GuestuserService.java new file mode 100644 index 0000000..2761508 --- /dev/null +++ b/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Services/GuestuserService.java @@ -0,0 +1,133 @@ +package com.realnet.taxi_rental.Services; +import com.realnet.taxi_rental.Repository.GuestuserRepository; +import com.realnet.taxi_rental.Entity.Guestuser +;import java.util.*; + +import org.springframework.beans.factory.annotation.Autowired; +import com.realnet.SequenceGenerator.Service.SequenceService; +import org.springframework.data.domain.Page; +import com.realnet.realm.Entity.Realm; +import com.realnet.realm.Services.RealmService; +import org.springframework.data.domain.Pageable; +import org.springframework.http.*; +import com.realnet.users.service1.AppUserServiceImpl; +import com.realnet.users.entity1.AppUser; + + + + + + + + + + + + + + + import org.springframework.stereotype.Service; + +@Service + public class GuestuserService { +@Autowired +private GuestuserRepository Repository; + @Autowired + private AppUserServiceImpl userService; +@Autowired + private RealmService realmService; + + + + + + + + + + + + + +public Guestuser Savedata(Guestuser data) { + + + + + + + + + + + + + + + data.setUpdatedBy(getUser().getUserId()); + data.setCreatedBy(getUser().getUserId()); + data.setAccountId(getUser().getAccount().getAccount_id()); +Guestuser save = Repository.save(data); + return save; + } + + +// get all with pagination + public Page getAllWithPagination(Pageable page) { + return Repository.findAll( getUser().getUserId(),page); + } +public List getdetails() { + List realm = realmService.findByUserId(getUser().getUserId()); +List all = Repository.findAll(getUser().getUserId()); + + return all ; } + + +public Guestuser getdetailsbyId(Integer id) { + return Repository.findById(id).get(); + } + + + public void delete_by_id(Integer id) { + Repository.deleteById(id); +} + + +public Guestuser update(Guestuser data,Integer id) { + Guestuser old = Repository.findById(id).get(); +old.setFullname(data.getFullname()); + +old.setActive (data.getActive()); + +old.setMacaddress(data.getMacaddress()); + +old.setEmail(data.getEmail()); + +old.setMob_no(data.getMob_no()); + +old.setDateofbirth(data.getDateofbirth()); + +old.setDriving_license_no(data.getDriving_license_no()); + +final Guestuser test = Repository.save(old); + data.setUpdatedBy(getUser().getUserId()); + return test;} + + + + + + + + + + + + + + + public AppUser getUser() { + AppUser user = userService.getLoggedInUser(); + return user; + + }} diff --git a/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Services/Office_ListFilter1Service.java b/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Services/Office_ListFilter1Service.java index 5841a8d..f7ae709 100644 --- a/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Services/Office_ListFilter1Service.java +++ b/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Services/Office_ListFilter1Service.java @@ -21,14 +21,12 @@ private OfficeRepository Repository; List list= Repository.findAll(); ArrayList l = new ArrayList<>(); for (Office data : list) { -boolean isactive = data.getActive(); - - if (isactive) {{ +{ Office_ListFilter1 dummy = new Office_ListFilter1(); dummy.setId(data.getId()); dummy.setName(data.getName()); l.add(dummy); -}} +} } return l;} @@ -38,14 +36,12 @@ return l;} List list= Repository.findAll(); ArrayList l = new ArrayList<>(); for (Office data : list) { -boolean isactive = data.getActive(); - - if (isactive) {{ +{ Office_ListFilter1 dummy = new Office_ListFilter1(); dummy.setId(data.getId()); dummy.setName(data.getName()); l.add(dummy); -}} +} } return l;} } \ No newline at end of file diff --git a/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Services/Products_ListFilter1Service.java b/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Services/Products_ListFilter1Service.java index 3a42d31..0a3837a 100644 --- a/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Services/Products_ListFilter1Service.java +++ b/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Services/Products_ListFilter1Service.java @@ -21,9 +21,7 @@ private ProductsRepository Repository; List list= Repository.findAll(); ArrayList l = new ArrayList<>(); for (Products data : list) { -boolean isactive = data.getActive(); - - if (isactive) {{ +{ Products_ListFilter1 dummy = new Products_ListFilter1(); dummy.setId(data.getId()); dummy.setName(data.getName()); @@ -31,7 +29,7 @@ Products_ListFilter1 dummy = new Products_ListFilter1(); dummy.setFeatures(data.getFeatures()); dummy.setDescription(data.getDescription()); l.add(dummy); -}} +} } return l;} @@ -41,9 +39,7 @@ return l;} List list= Repository.findAll(); ArrayList l = new ArrayList<>(); for (Products data : list) { -boolean isactive = data.getActive(); - - if (isactive) {{ +{ Products_ListFilter1 dummy = new Products_ListFilter1(); dummy.setId(data.getId()); dummy.setName(data.getName()); @@ -51,7 +47,7 @@ Products_ListFilter1 dummy = new Products_ListFilter1(); dummy.setFeatures(data.getFeatures()); dummy.setDescription(data.getDescription()); l.add(dummy); -}} +} } return l;} } \ No newline at end of file diff --git a/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Services/Vehicle_add_on_ListFilter1Service.java b/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Services/Vehicle_add_on_ListFilter1Service.java index 63e877f..afd1cf7 100644 --- a/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Services/Vehicle_add_on_ListFilter1Service.java +++ b/tesitest1-backf-b/authsec_springboot/backend/src/main/java/com/realnet/taxi_rental/Services/Vehicle_add_on_ListFilter1Service.java @@ -21,9 +21,7 @@ private Vehicle_add_onRepository Repository; List list= Repository.findAll(); ArrayList l = new ArrayList<>(); for (Vehicle_add_on data : list) { -boolean isactive = data.getActive(); - - if (isactive) {{ +{ Vehicle_add_on_ListFilter1 dummy = new Vehicle_add_on_ListFilter1(); dummy.setId(data.getId()); dummy.setName(data.getName()); @@ -31,7 +29,7 @@ Vehicle_add_on_ListFilter1 dummy = new Vehicle_add_on_ListFilter1(); dummy.setPrice_per_day(data.getPrice_per_day()); dummy.setPrice_per_trip(data.getPrice_per_trip()); l.add(dummy); -}} +} } return l;} @@ -41,9 +39,7 @@ return l;} List list= Repository.findAll(); ArrayList l = new ArrayList<>(); for (Vehicle_add_on data : list) { -boolean isactive = data.getActive(); - - if (isactive) {{ +{ Vehicle_add_on_ListFilter1 dummy = new Vehicle_add_on_ListFilter1(); dummy.setId(data.getId()); dummy.setName(data.getName()); @@ -51,7 +47,7 @@ Vehicle_add_on_ListFilter1 dummy = new Vehicle_add_on_ListFilter1(); dummy.setPrice_per_day(data.getPrice_per_day()); dummy.setPrice_per_trip(data.getPrice_per_trip()); l.add(dummy); -}} +} } return l;} } \ No newline at end of file diff --git a/tesitest1-fdb-d/authsec_mysql/mysql/wf_table/wf_table.sql b/tesitest1-fdb-d/authsec_mysql/mysql/wf_table/wf_table.sql index 59ca414..12d4d87 100755 --- a/tesitest1-fdb-d/authsec_mysql/mysql/wf_table/wf_table.sql +++ b/tesitest1-fdb-d/authsec_mysql/mysql/wf_table/wf_table.sql @@ -1,14 +1,6 @@ CREATE TABLE fdb.Feature(id BIGINT NOT NULL AUTO_INCREMENT, active VARCHAR(400), description VARCHAR(400), name VARCHAR(400), PRIMARY KEY (id)); -CREATE TABLE fdb.Office(id BIGINT NOT NULL AUTO_INCREMENT, active VARCHAR(400), description VARCHAR(400), name VARCHAR(400), PRIMARY KEY (id)); +CREATE TABLE fdb.Coupon(id BIGINT NOT NULL AUTO_INCREMENT, active VARCHAR(400), description VARCHAR(400), name VARCHAR(400), PRIMARY KEY (id)); -CREATE TABLE fdb.Car_category(id BIGINT NOT NULL AUTO_INCREMENT, active VARCHAR(400), description VARCHAR(400), name VARCHAR(400), PRIMARY KEY (id)); - -CREATE TABLE fdb.Vehicle_add_on(id BIGINT NOT NULL AUTO_INCREMENT, active VARCHAR(400), description VARCHAR(400), icon VARCHAR(400), price_per_day int, price_per_trip int, name VARCHAR(400), PRIMARY KEY (id)); - -CREATE TABLE fdb.Custom_setting(id BIGINT NOT NULL AUTO_INCREMENT, active VARCHAR(400), description VARCHAR(400), pst_rate int, age_threshold int, free_km int, gst_rate int, yound_driver_surcharge int, extra_km_charge int, name VARCHAR(400), PRIMARY KEY (id)); - -CREATE TABLE fdb.Rides(id BIGINT NOT NULL AUTO_INCREMENT, return_address int, active VARCHAR(400), description VARCHAR(400), return_to_same_location VARCHAR(400), vehicle_add_on VARCHAR(400), product int, pick_up int, iscompleted VARCHAR(400), name VARCHAR(400), PRIMARY KEY (id)); - -CREATE TABLE fdb.Products(id BIGINT NOT NULL AUTO_INCREMENT, product_images VARCHAR(400), active VARCHAR(400), description VARCHAR(400), category int, features int, name VARCHAR(400), PRIMARY KEY (id)); +CREATE TABLE fdb.Guestuser(id BIGINT NOT NULL AUTO_INCREMENT, dateofbirth Date, active VARCHAR(400), macaddress VARCHAR(400), driving_license_no VARCHAR(400), fullname VARCHAR(400), email VARCHAR(400), mob_no VARCHAR(400), PRIMARY KEY (id)); diff --git a/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Coupon/CouponView/Coupon_api_service.dart b/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Coupon/CouponView/Coupon_api_service.dart new file mode 100644 index 0000000..2d9c489 --- /dev/null +++ b/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Coupon/CouponView/Coupon_api_service.dart @@ -0,0 +1,84 @@ +import 'dart:typed_data'; +import 'package:dio/dio.dart'; +import 'package:http_parser/http_parser.dart'; +import '../../../../resources/api_constants.dart'; +import '../../../../data/network/base_network_service.dart'; +import '../../../../data/network/network_api_service.dart'; + +class CouponApiService { + final String baseUrl = ApiConstants.baseUrl; + + final BaseNetworkService _helper = NetworkApiService(); + + + + Future>> getEntities() async { + + try { + final response = await _helper.getGetApiResponse('$baseUrl/Coupon/Coupon'); + final entities = (response as List).cast>(); + return entities; + } catch (e) { + throw Exception('Failed to get all entities: $e'); + } + } +Future>> getAllWithPagination( + int page, int size) async { + try { + final response = + await _helper.getGetApiResponse('$baseUrl/Coupon/Coupon/getall/page?page=$page&size=$size'); + final entities = + (response['content'] as List).cast>(); + return entities; + } catch (e) { + throw Exception('Failed to get all without pagination: $e'); + } + } + Future> createEntity( + Map entity) async { + try { + print("in post api$entity"); + final response = + await _helper.getPostApiResponse('$baseUrl/Coupon/Coupon', entity); + + print(entity); + + // Assuming the response is a Map + Map responseData = response; + + return responseData; + } catch (e) { + throw Exception('Failed to create entity: $e'); + } + } + + + + + + + + Future updateEntity( int entityId, Map entity) async { + try { + await _helper.getPutApiResponse('$baseUrl/Coupon/Coupon/$entityId', + entity); print(entity); + + } catch (e) { + throw Exception('Failed to update entity: $e'); + } + } + + Future deleteEntity( int entityId) async { + try { + await _helper.getDeleteApiResponse('$baseUrl/Coupon/Coupon/$entityId'); + } catch (e) { + throw Exception('Failed to delete entity: $e'); + } + } + + + + + + +} \ No newline at end of file diff --git a/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Coupon/CouponView/Coupon_create_entity_screen.dart b/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Coupon/CouponView/Coupon_create_entity_screen.dart new file mode 100644 index 0000000..2915605 --- /dev/null +++ b/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Coupon/CouponView/Coupon_create_entity_screen.dart @@ -0,0 +1,82 @@ +// ignore_for_file: use_build_context_synchronously +import 'dart:convert'; +import 'package:flutter/material.dart'; +import 'package:file_picker/file_picker.dart'; +import 'package:image_picker/image_picker.dart'; +import 'package:provider/provider.dart'; +import '../Coupon_viewModel/Coupon_view_model_screen.dart'; +import 'Coupon_fields.dart';import 'package:base_project/BuilderField/shared/ui/entity_screens.dart'; +import '../../../../utils/image_constant.dart'; +import '../../../../utils/size_utils.dart'; +import '../../../../theme/app_style.dart'; +import '../../../../widgets/app_bar/appbar_image.dart'; +import '../../../../widgets/app_bar/appbar_title.dart'; +import '../../../../widgets/app_bar/custom_app_bar.dart'; +import '../../../../widgets/custom_button.dart'; +import '../../../../widgets/custom_text_form_field.dart'; +import '../../../../widgets/custom_dropdown_field.dart'; +import 'dart:math'; +import 'package:qr_flutter/qr_flutter.dart'; +import 'package:barcode_widget/barcode_widget.dart'; +import 'package:intl/intl.dart'; + +import 'package:autocomplete_textfield/autocomplete_textfield.dart'; +import 'package:http/http.dart' as http; +import 'package:flutter/services.dart'; +import 'package:image_picker/image_picker.dart'; +import 'package:fluttertoast/fluttertoast.dart'; +import '../../../../Reuseable/reusable_date_picker_field.dart'; +import '../../../../Reuseable/reusable_date_time_picker_field.dart' +;import 'package:multi_select_flutter/multi_select_flutter.dart'; +import 'package:just_audio/just_audio.dart'; +import 'package:video_player/video_player.dart'; +import 'package:google_fonts/google_fonts.dart'; +import 'package:lottie/lottie.dart'; +import '../../../../utils/toast_messages/toast_message_util.dart'; +import 'dart:io'; +import '../../../../Reuseable/reusable_text_field.dart'; +import '../../../../Reuseable/reusable_dropdown_field.dart'; + + + + + + +class CouponCreateEntityScreen extends StatefulWidget { + const CouponCreateEntityScreen({super.key}); + + @override + _CouponCreateEntityScreenState createState() => _CouponCreateEntityScreenState(); +} + +class _CouponCreateEntityScreenState extends State { + +final Map formData = {}; + final _formKey = GlobalKey(); + + @override + Widget build(BuildContext context) { + return Consumer( + builder: (context, viewModel, child) { + return EntityCreateScreen( + fields: CouponFields.getFields(context), + onSubmit: (data) => _handleSubmit(data), + title: 'Coupon', + isLoading: viewModel.isLoading, + errorMessage: + viewModel.errorMessage.isNotEmpty ? viewModel.errorMessage : null, + ); + }, + ); + } + + Future _handleSubmit(Map formData) async { + final provider = + Provider.of(context, listen: false); + final success = await provider.createEntity(formData); + + if (success && mounted) { + Navigator.pop(context); + } + } +} \ No newline at end of file diff --git a/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Coupon/CouponView/Coupon_details_screen.dart b/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Coupon/CouponView/Coupon_details_screen.dart new file mode 100644 index 0000000..0e8c01d --- /dev/null +++ b/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Coupon/CouponView/Coupon_details_screen.dart @@ -0,0 +1,90 @@ +// ignore_for_file: use_build_context_synchronously +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import '../../../../BuilderField/shared/ui/entity_details.dart'; +import '../Coupon_viewModel/Coupon_view_model_screen.dart'; +import 'Coupon_update_entity_screen.dart'; + +class CouponDetailsScreen extends StatefulWidget { + final Map entity; + + const CouponDetailsScreen({ + super.key, + required this.entity, + }); + + @override + State createState() => _CouponDetailsScreenState(); +} + +class _CouponDetailsScreenState extends State { + void _navigateToUpdateScreen(Map entity) { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => ChangeNotifierProvider( + create: (context) => CouponViewModelScreen(), + child: CouponUpdateEntityScreen(entity: entity), + ), + ), + ).then((_) { + // Refresh the details screen with updated data + setState(() {}); + }); + } + + void _showDeleteDialog(Map entity) { + showDialog( + context: context, + builder: (BuildContext context) { + return AlertDialog( + title: const Text('Confirm Deletion'), + content: const Text('Are you sure you want to delete this Coupon?'), + actions: [ + TextButton( + child: const Text('Cancel'), + onPressed: () { + Navigator.of(context).pop(); + }, + ), + TextButton( + child: const Text('Delete'), + onPressed: () async { + Navigator.of(context).pop(); + final vm = + Provider.of(context, listen: false); + final success = await vm.deleteEntity(entity['id']); + if (success && mounted) { + Navigator.pop(context); // Go back to list + } + }, + ), + ], + ); + }, + ); + } + + @override + Widget build(BuildContext context) { + return Consumer( + builder: (context, viewModel, child) { + return EntityDetails( + entity: widget.entity, + onEdit: (entity) => _navigateToUpdateScreen(entity), + onDelete: (entity) => _showDeleteDialog(entity), + title: 'Coupon', + displayFields: [ + {'key': 'name', 'label': 'Name', 'type': 'text'}, + + {'key': 'description', 'label': 'Description', 'type': 'textarea'}, + + {'key': 'active', 'label': 'Active', 'type': 'toggle_switch'}, + + ], + isLoading: viewModel.isLoading, + ); + }, + ); + } +} diff --git a/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Coupon/CouponView/Coupon_entity_list_screen.dart b/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Coupon/CouponView/Coupon_entity_list_screen.dart new file mode 100644 index 0000000..6bf5f01 --- /dev/null +++ b/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Coupon/CouponView/Coupon_entity_list_screen.dart @@ -0,0 +1,150 @@ +// ignore_for_file: use_build_context_synchronously +import 'package:flutter/material.dart'; +import 'package:intl/intl.dart'; +import 'package:base_project/BuilderField/shared/ui/entity_list.dart'; +import 'Coupon_create_entity_screen.dart'; +import 'Coupon_update_entity_screen.dart'; +import '../Coupon_viewModel/Coupon_view_model_screen.dart'; +import 'Coupon_details_screen.dart';import 'package:flutter/services.dart'; +import 'package:speech_to_text/speech_to_text.dart' as stt; +import '../../../../theme/app_style.dart'; +import '../../../../utils/size_utils.dart'; +import '../../../../widgets/custom_icon_button.dart'; +import '../../../../utils/image_constant.dart'; +import '../../../../widgets/app_bar/appbar_image.dart'; +import '../../../../widgets/app_bar/appbar_title.dart'; +import '../../../../widgets/app_bar/custom_app_bar.dart'; +import '../../../../theme/app_decoration.dart'; +import 'package:multi_select_flutter/multi_select_flutter.dart'; +import '../../../../Reuseable/reusable_text_field.dart'; +import 'package:provider/provider.dart'; +import '../../../../utils/toast_messages/toast_message_util.dart'; +import 'package:fluttertoast/fluttertoast.dart'; + +class Coupon_entity_list_screen extends StatefulWidget { + static const String routeName = '/entity-list'; + + @override + _Coupon_entity_list_screenState createState() => _Coupon_entity_list_screenState(); +} + +class _Coupon_entity_list_screenState extends State { + @override + void initState() { + super.initState(); + _loadData(); + } + + void _loadData() { + WidgetsBinding.instance.addPostFrameCallback((_) { + if (mounted) { + final vm = Provider.of(context, listen: false); + vm.getAllWithPagination(refresh: true); + } + }); + } + + void _navigateToCreateScreen() { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => ChangeNotifierProvider( + create: (context) => CouponViewModelScreen(), + child: const CouponCreateEntityScreen(), + ), + ), + ).then((_) { + final vm = Provider.of(context, listen: false); + vm.refreshData(); + }); + } + + void _navigateToUpdateScreen(Map entity) { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => ChangeNotifierProvider( + create: (context) => CouponViewModelScreen(), + child: CouponUpdateEntityScreen(entity: entity), + ), + ), + ).then((_) { + final vm = Provider.of(context, listen: false); + vm.refreshData(); + }); + } + + void _navigateToDetailsScreen(Map entity) { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => ChangeNotifierProvider( + create: (context) => CouponViewModelScreen(), + child: CouponDetailsScreen(entity: entity), + ), + ), + ); + } + + void _showDeleteDialog(Map entity) { + final parentContext = context; + showDialog( + context: context, + builder: (BuildContext context) { + return AlertDialog( + title: const Text('Confirm Deletion'), + content: const Text('Are you sure you want to delete this Coupon?'), + actions: [ + TextButton( + child: const Text('Cancel'), + onPressed: () { + Navigator.of(context).pop(); + }, + ), + TextButton( + child: const Text('Delete'), + onPressed: () async { + Navigator.of(context).pop(); + final vm = + Provider.of(parentContext, listen: false); + await vm.deleteEntity(entity['id']); + }, + ), + ], + ); + }, + ); + } + + @override + Widget build(BuildContext context) { + return Consumer( + builder: (context, viewModel, child) { + return EntityList( + entities: viewModel.filteredList, + isLoading: viewModel.isLoading, + errorMessage: + viewModel.errorMessage.isNotEmpty ? viewModel.errorMessage : null, + hasMoreData: viewModel.hasMoreData, + searchQuery: viewModel.searchQuery, + onSearchChanged: (query) => viewModel.searchcoupon(query), + onEdit: (entity) => _navigateToUpdateScreen(entity), + onDelete: (entity) => _showDeleteDialog(entity), + onTap: (entity) => _navigateToDetailsScreen(entity), + onRefresh: () => viewModel.refreshData(), + onLoadMore: () => viewModel.getAllWithPagination(), + title: 'Coupon', + onAddNew: _navigateToCreateScreen, + displayFields: [ + {'key': 'name', 'label': 'Name', 'type': 'text'}, + + {'key': 'description', 'label': 'Description', 'type': 'textarea'}, + + {'key': 'active', 'label': 'Active', 'type': 'toggle_switch'}, + + ], + ); + }, + ); + } +} diff --git a/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Coupon/CouponView/Coupon_fields.dart b/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Coupon/CouponView/Coupon_fields.dart new file mode 100644 index 0000000..bb63aef --- /dev/null +++ b/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Coupon/CouponView/Coupon_fields.dart @@ -0,0 +1,76 @@ +import 'package:base_project/BuilderField/shared/fields/number_field.dart'; +import 'package:base_project/BuilderField/shared/fields/password_field.dart'; +import 'package:base_project/BuilderField/shared/fields/phone_field.dart'; +import 'package:base_project/BuilderField/shared/fields/custom_text_field.dart'; + +import '../../../../BuilderField/shared/fields/base_field.dart'; + +import '../../../../BuilderField/shared/fields/date_field.dart'; +import '../../../../BuilderField/shared/fields/datetime_field.dart'; +import '../../../../BuilderField/shared/fields/email_field.dart'; +import 'package:base_project/BuilderField/shared/fields/url_field.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; + +import '../../../../BuilderField/shared/fields/custom_text_field.dart' as shared_text; +import '../../../../BuilderField/shared/fields/one_to_one_relation_field.dart'; +import '../../../../BuilderField/shared/fields/calculated_field.dart'; +import '../../../../BuilderField/shared/fields/one_to_many_field.dart'; +import '../../../../BuilderField/shared/fields/value_list_picker_field.dart'; +import '../../../../BuilderField/shared/fields/captcha_field.dart'; +import '../../../../BuilderField/shared/fields/switch_field.dart'; +import '../../../../BuilderField/shared/fields/url_field.dart'; + +import '../../../../BuilderField/shared/fields/audio_upload_field.dart'; +import '../../../../BuilderField/shared/fields/checkbox_field.dart'; +import '../../../../BuilderField/shared/fields/file_upload_field.dart'; +import '../../../../BuilderField/shared/fields/image_upload_field.dart'; +import '../../../../BuilderField/shared/fields/radio_field.dart'; +import '../../../../BuilderField/shared/fields/video_upload_field.dart'; + +import '../../../../BuilderField/shared/fields/autocomplete_dropdown_field.dart'; +import '../../../../BuilderField/shared/fields/autocomplete_multiselect_field.dart'; +import '../../../../BuilderField/shared/fields/one_to_one_relation_field.dart'; +import '../../../../BuilderField/shared/fields/data_grid_field.dart'; +import '../../../../BuilderField/shared/fields/dropdown_field.dart'; +import '../../../../BuilderField/shared/fields/dynamic_dropdown_field.dart'; +import '../../../../BuilderField/shared/fields/dynamic_multiselect_dropdown_field.dart'; +import '../../../../BuilderField/shared/fields/static_multiselect_field.dart'; +import '../../../../BuilderField/shared/fields/currency_field.dart'; +import '../../../../BuilderField/shared/fields/field_group_field.dart'; +import '../../../../BuilderField/shared/fields/qr_code_field.dart'; +import '../../../../BuilderField/shared/fields/barcode_field.dart'; +import '../../../../BuilderField/shared/fields/dependent_dropdown_field.dart'; + import '../Coupon_viewModel/Coupon_view_model_screen.dart';/// Field definitions for Coupon entity +/// This defines the structure and validation for Coupon forms +class CouponFields { + /// Get field definitions for Coupon entity + static List getFields(BuildContext context) { + final viewModel = + Provider.of(context, listen: false); + return [ + // Basic Information + CustomTextField( + fieldKey: 'name', + label: 'Name', + hint: 'Enter Name', + isRequired: true, + maxLength: 50, + ), + +CustomTextField( + fieldKey: 'description', + label: 'Description', + hint: 'Enter Description', + isRequired: false, + maxLength: 1000, + ), + + SwitchField( + fieldKey: 'active', + label: 'Active', + ), + + ]; + } +} diff --git a/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Coupon/CouponView/Coupon_update_entity_screen.dart b/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Coupon/CouponView/Coupon_update_entity_screen.dart new file mode 100644 index 0000000..ee9a370 --- /dev/null +++ b/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Coupon/CouponView/Coupon_update_entity_screen.dart @@ -0,0 +1,77 @@ +// ignore_for_file: use_build_context_synchronously +import 'dart:convert'; +import 'package:provider/provider.dart'; +import '../Coupon_viewModel/Coupon_view_model_screen.dart'; +import 'package:base_project/BuilderField/shared/ui/entity_screens.dart'; +import 'Coupon_fields.dart';import '../../../../utils/image_constant.dart'; +import '../../../../utils/size_utils.dart'; +import '../../../../theme/app_style.dart'; +import '../../../../widgets/app_bar/appbar_image.dart'; +import '../../../../widgets/app_bar/appbar_title.dart'; +import '../../../../widgets/app_bar/custom_app_bar.dart'; +import 'package:barcode_widget/barcode_widget.dart'; +import 'package:fluttertoast/fluttertoast.dart'; +import '../../../../widgets/custom_button.dart'; +import '../../../../widgets/custom_text_form_field.dart'; +import 'package:flutter/material.dart'; +import 'package:autocomplete_textfield/autocomplete_textfield.dart'; +import 'package:qr_flutter/qr_flutter.dart'; +import 'package:intl/intl.dart'; + +import 'dart:math'; +import '../../../../Reuseable/reusable_text_field.dart'; +import '../../../../Reuseable/reusable_date_picker_field.dart'; +import '../../../../Reuseable/reusable_date_time_picker_field.dart'; +import '../../../../Reuseable/reusable_dropdown_field.dart'; +import 'package:flutter/services.dart'; +class CouponUpdateEntityScreen extends StatefulWidget { + final Map entity; + + + CouponUpdateEntityScreen({required this.entity}); + + @override + _CouponUpdateEntityScreenState createState() => _CouponUpdateEntityScreenState(); +} + +class _CouponUpdateEntityScreenState extends State { + final _formKey = GlobalKey(); + +@override + Widget build(BuildContext context) { + return Consumer( + builder: (context, viewModel, child) { +// Start with all fields, then remove upload fields (generic filter by keys) + final Set hiddenKeys = { + + + + + + + }; + final fields = CouponFields.getFields(context) + .where((f) => !hiddenKeys.contains(f.fieldKey)) + .toList(); return EntityUpdateScreen( + fields: fields, + initialData: widget.entity, + onSubmit: (data) => _handleSubmit(data), + title: 'Coupon', + isLoading: viewModel.isLoading, + errorMessage: + viewModel.errorMessage.isNotEmpty ? viewModel.errorMessage : null, + ); + }, + ); + } + + Future _handleSubmit(Map formData) async { + final provider = + Provider.of(context, listen: false); + final success = await provider.updateEntity(widget.entity['id'], formData); + + if (success && mounted) { + Navigator.pop(context); + } + } +} diff --git a/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Coupon/Coupon_Repo/Coupon_repo_screen.dart b/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Coupon/Coupon_Repo/Coupon_repo_screen.dart new file mode 100644 index 0000000..073569c --- /dev/null +++ b/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Coupon/Coupon_Repo/Coupon_repo_screen.dart @@ -0,0 +1,95 @@ +import 'package:dio/dio.dart'; +import '../../../../data/network/base_network_service.dart'; +import '../../../../data/network/network_api_service.dart'; +import '../../../../resources/api_constants.dart'; +import 'package:base_project/data/response/api_response.dart'; + +class CouponRepoScreen { + + final String baseUrl = ApiConstants.baseUrl; + final BaseNetworkService _helper = NetworkApiService(); + final String _endpointPath = '/Coupon/Coupon'; + + Future>>> getEntities() async { + try { + final response = + await _helper.getGetApiResponse('$baseUrl$_endpointPath'); + print('Response received: $response'); + List> entities = const []; + if (response is List) { + entities = response + .whereType() + .map((e) => Map.from(e as Map)) + .toList(); + } else if (response is Map) { + final dynamic content = response['content']; + if (content is List) { + entities = content + .whereType() + .map((e) => Map.from(e as Map)) + .toList(); + } + } + return ApiResponse.success(entities); + } catch (e) { + print(' error got $e'); + return ApiResponse.error('Failed to get all entities: $e'); + } + } + + Future>>> getAllWithPagination( + int page, int size) async { + try { + final response = await _helper.getGetApiResponse( + '$baseUrl$_endpointPath/getall/page?page=$page&size=$size'); + + if (response is Map && response['content'] is List) { + final List> entities = + (response['content'] as List).cast>().toList(); + return ApiResponse.success(entities); + } else { + return ApiResponse.error('Invalid response format'); + } + } catch (e) { + return ApiResponse.error('Failed to get all without pagination: $e'); + } + } + + Future>> createEntity( + Map entity) async { + try { + print("in post api$entity"); + final response = + await _helper.getPostApiResponse('$baseUrl$_endpointPath', entity); + return ApiResponse.success(response as Map); + } catch (e) { + return ApiResponse.error('Failed to create entity: $e'); + } + } + + Future>> updateEntity( + int entityId, Map entity) async { + try { + final response = await _helper.getPutApiResponse( + '$baseUrl$_endpointPath/$entityId', entity); + return ApiResponse.success(response as Map); + } catch (e) { + return ApiResponse.error('Failed to update entity: $e'); + } + } + + Future> deleteEntity(int entityId) async { + try { + await _helper.getDeleteApiResponse('$baseUrl$_endpointPath/$entityId'); + return ApiResponse.success(null); + } catch (e) { + return ApiResponse.error('Failed to delete entity: $e'); + } + } + + + + + + +} diff --git a/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Coupon/Coupon_viewModel/Coupon_view_model_screen.dart b/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Coupon/Coupon_viewModel/Coupon_view_model_screen.dart new file mode 100644 index 0000000..d848e50 --- /dev/null +++ b/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Coupon/Coupon_viewModel/Coupon_view_model_screen.dart @@ -0,0 +1,305 @@ +import 'package:base_project/data/response/status.dart'; +import 'dart:typed_data'; +import 'package:dio/dio.dart'; +import 'package:http_parser/http_parser.dart'; +import '../../../../utils/toast_messages/toast_message_util.dart'; +import '../../../../BuilderField/shared/utils/entity_field_store.dart'; +import 'package:flutter/material.dart'; +import '../Coupon_Repo/Coupon_repo_screen.dart'; + +class CouponViewModelScreen extends ChangeNotifier{ + final CouponRepoScreen repo = CouponRepoScreen(); + + + // State variables + List> _couponList = []; + List> _filteredList = []; + bool _isLoading = false; + String _errorMessage = ''; + int _currentPage = 0; + int _pageSize = 10; + bool _hasMoreData = true; + String _searchQuery = ''; + + // Getters + List> get couponList => _couponList; + List> get filteredList => _filteredList; + bool get isLoading => _isLoading; + String get errorMessage => _errorMessage; + bool get hasMoreData => _hasMoreData; + String get searchQuery => _searchQuery; + + // Set loading state + void _setLoading(bool loading) { + _isLoading = loading; + notifyListeners(); + } + + // Set error message + void _setError(String error) { + _errorMessage = error; + notifyListeners(); + } + + // Clear error + void clearError() { + _errorMessage = ''; + notifyListeners(); + } + + // Get coupon list + Future getEntities() async { + _setLoading(true); + _setError(''); + + try { + final response = await repo.getEntities(); + + if (response.status == Status.SUCCESS) { + _couponList = response.data ?? []; + _filteredList = List.from(_couponList); + _currentPage = 0; + _hasMoreData = true; + } else { + _setError(response.message ?? 'Failed to fetch coupon list'); + } + } catch (e) { + _setError('Failed to fetch coupon list: $e'); + } finally { + _setLoading(false); + } + } + + // Get coupon list with pagination + Future getAllWithPagination({bool refresh = false}) async { + if (refresh) { + _currentPage = 0; + _couponList.clear(); + _filteredList.clear(); + _hasMoreData = true; + } + + if (!_hasMoreData || _isLoading) return; + + _setLoading(true); + _setError(''); + + try { + final response = await repo.getAllWithPagination(_currentPage, _pageSize); + + if (response.status == Status.SUCCESS) { + final newItems = response.data ?? []; + + if (refresh) { + _couponList = newItems; + } else { + _couponList.addAll(newItems); + } + + _filteredList = List.from(_couponList); + _currentPage++; + + // Check if we have more data + _hasMoreData = newItems.length == _pageSize; + } else { + _setError(response.message ?? 'Failed to fetch Coupon list'); + } + } catch (e) { + _setError('Failed to fetch coupon list: $e'); + } finally { + _setLoading(false); + } + } + + + + + + + + // Create Coupon + Future createEntity(Map entity) async { + _setLoading(true); + _setError(''); + + try { + + + + + + + final response = await repo.createEntity(entity); + + if (response.status == Status.SUCCESS) { +// Get the response ID for image upload + + final responseId = response.data!['id'].toString(); + + + + + + + ToastMessageUtil.showToast( + message: 'coupon created successfully', + toastType: ToastType.success, + ); + + // Refresh the list + await getEntities(); + + + + + + + return true; + } else { + _setError(response.message ?? 'Failed to create Coupon'); + ToastMessageUtil.showToast( + message: response.message ?? 'Failed to create Coupon', + toastType: ToastType.error, + ); + return false; + } + } catch (e) { + _setError('Failed to create coupon: $e'); + ToastMessageUtil.showToast( + message: 'Failed to create Coupon: $e', + toastType: ToastType.error, + ); + return false; + } finally { + _setLoading(false); + } + } + + // Update coupon + Future updateEntity(int id, Map entity) async { + _setLoading(true); + _setError(''); + + try { + final response = await repo.updateEntity(id, entity); + + if (response.status == Status.SUCCESS) { + ToastMessageUtil.showToast( + message: 'Coupon updated successfully', + toastType: ToastType.success, + ); + + // Update the item in the list + final index = _couponList.indexWhere((item) => item['id'] == id); + if (index != -1) { + _couponList[index] = response.data!; + _filteredList = List.from(_couponList); + notifyListeners(); + } + return true; + } else { + _setError(response.message ?? 'Failed to update Coupon'); + ToastMessageUtil.showToast( + message: response.message ?? 'Failed to update Coupon', + toastType: ToastType.error, + ); + return false; + } + } catch (e) { + _setError('Failed to update coupon: $e'); + ToastMessageUtil.showToast( + message: 'Failed to update Coupon: $e', + toastType: ToastType.error, + ); + return false; + } finally { + _setLoading(false); + } + } + + // Delete coupon + Future deleteEntity(int id) async { + _setLoading(true); + _setError(''); + + try { + final response = await repo.deleteEntity(id); + + if (response.status == Status.SUCCESS) { + ToastMessageUtil.showToast( + message: 'Coupon deleted successfully', + toastType: ToastType.success, + ); + + // Remove the item from the list + _couponList.removeWhere((item) => item['id'] == id); + _filteredList = List.from(_couponList); + notifyListeners(); + return true; + } else { + _setError(response.message ?? 'Failed to delete Coupon'); + ToastMessageUtil.showToast( + message: response.message ?? 'Failed to delete Coupon', + toastType: ToastType.error, + ); + return false; + } + } catch (e) { + _setError('Failed to delete coupon: $e'); + ToastMessageUtil.showToast( + message: 'Failed to delete Coupon: $e', + toastType: ToastType.error, + ); + return false; + } finally { + _setLoading(false); + } + } + + // Search coupon + void searchcoupon(String query) { + _searchQuery = query; + + if (query.isEmpty) { + _filteredList = List.from(_couponList); + } else { + _filteredList = _couponList.where((item) { + return + + +(item['name']?.toString().toLowerCase().contains(query.toLowerCase()) ??false) || + + + + + +(item['description']?.toString().toLowerCase().contains(query.toLowerCase()) ??false) || + + +(item['active']?.toString().toLowerCase().contains(query.toLowerCase()) ??false) + + +; + }).toList(); + } + notifyListeners(); + } + + // Clear search + void clearSearch() { + _searchQuery = ''; + _filteredList = List.from(_couponList); + notifyListeners(); + } + + // Refresh data + Future refreshData() async { + await getAllWithPagination(refresh: true); + } + + + + + + +} \ No newline at end of file diff --git a/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Feature/FeatureView/Feature_entity_list_screen.dart b/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Feature/FeatureView/Feature_entity_list_screen.dart index cb4be13..6c9aded 100644 --- a/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Feature/FeatureView/Feature_entity_list_screen.dart +++ b/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Feature/FeatureView/Feature_entity_list_screen.dart @@ -87,6 +87,7 @@ class _Feature_entity_list_screenState extends State } void _showDeleteDialog(Map entity) { + final parentContext = context; showDialog( context: context, builder: (BuildContext context) { @@ -105,7 +106,7 @@ class _Feature_entity_list_screenState extends State onPressed: () async { Navigator.of(context).pop(); final vm = - Provider.of(context, listen: false); + Provider.of(parentContext, listen: false); await vm.deleteEntity(entity['id']); }, ), diff --git a/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Feature/FeatureView/Feature_fields.dart b/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Feature/FeatureView/Feature_fields.dart index 9abb69f..c5e4956 100644 --- a/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Feature/FeatureView/Feature_fields.dart +++ b/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Feature/FeatureView/Feature_fields.dart @@ -35,7 +35,13 @@ import '../../../../BuilderField/shared/fields/data_grid_field.dart'; import '../../../../BuilderField/shared/fields/dropdown_field.dart'; import '../../../../BuilderField/shared/fields/dynamic_dropdown_field.dart'; import '../../../../BuilderField/shared/fields/dynamic_multiselect_dropdown_field.dart'; -import '../../../../BuilderField/shared/fields/static_multiselect_field.dart';import '../Feature_viewModel/Feature_view_model_screen.dart';/// Field definitions for Feature entity +import '../../../../BuilderField/shared/fields/static_multiselect_field.dart'; +import '../../../../BuilderField/shared/fields/currency_field.dart'; +import '../../../../BuilderField/shared/fields/field_group_field.dart'; +import '../../../../BuilderField/shared/fields/qr_code_field.dart'; +import '../../../../BuilderField/shared/fields/barcode_field.dart'; +import '../../../../BuilderField/shared/fields/dependent_dropdown_field.dart'; + import '../Feature_viewModel/Feature_view_model_screen.dart';/// Field definitions for Feature entity /// This defines the structure and validation for Feature forms class FeatureFields { /// Get field definitions for Feature entity diff --git a/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Feature/Feature_Repo/Feature_repo_screen.dart b/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Feature/Feature_Repo/Feature_repo_screen.dart index 105ba3d..d49ef14 100644 --- a/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Feature/Feature_Repo/Feature_repo_screen.dart +++ b/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Feature/Feature_Repo/Feature_repo_screen.dart @@ -14,12 +14,29 @@ class FeatureRepoScreen { try { final response = await _helper.getGetApiResponse('$baseUrl$_endpointPath'); - return ApiResponse.success(response as List>); + print('Response received: $response'); + List> entities = const []; + if (response is List) { + entities = response + .whereType() + .map((e) => Map.from(e as Map)) + .toList(); + } else if (response is Map) { + final dynamic content = response['content']; + if (content is List) { + entities = content + .whereType() + .map((e) => Map.from(e as Map)) + .toList(); + } + } + return ApiResponse.success(entities); } catch (e) { + print(' error got $e'); return ApiResponse.error('Failed to get all entities: $e'); } - } - + } + Future>>> getAllWithPagination( int page, int size) async { try { diff --git a/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Guestuser/GuestuserView/Guestuser_api_service.dart b/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Guestuser/GuestuserView/Guestuser_api_service.dart new file mode 100644 index 0000000..df7ed93 --- /dev/null +++ b/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Guestuser/GuestuserView/Guestuser_api_service.dart @@ -0,0 +1,100 @@ +import 'dart:typed_data'; +import 'package:dio/dio.dart'; +import 'package:http_parser/http_parser.dart'; +import '../../../../resources/api_constants.dart'; +import '../../../../data/network/base_network_service.dart'; +import '../../../../data/network/network_api_service.dart'; + +class GuestuserApiService { + final String baseUrl = ApiConstants.baseUrl; + + final BaseNetworkService _helper = NetworkApiService(); + + + + Future>> getEntities() async { + + try { + final response = await _helper.getGetApiResponse('$baseUrl/Guestuser/Guestuser'); + final entities = (response as List).cast>(); + return entities; + } catch (e) { + throw Exception('Failed to get all entities: $e'); + } + } +Future>> getAllWithPagination( + int page, int size) async { + try { + final response = + await _helper.getGetApiResponse('$baseUrl/Guestuser/Guestuser/getall/page?page=$page&size=$size'); + final entities = + (response['content'] as List).cast>(); + return entities; + } catch (e) { + throw Exception('Failed to get all without pagination: $e'); + } + } + Future> createEntity( + Map entity) async { + try { + print("in post api$entity"); + final response = + await _helper.getPostApiResponse('$baseUrl/Guestuser/Guestuser', entity); + + print(entity); + + // Assuming the response is a Map + Map responseData = response; + + return responseData; + } catch (e) { + throw Exception('Failed to create entity: $e'); + } + } + + + + + + + + + + + + + + + + Future updateEntity( int entityId, Map entity) async { + try { + await _helper.getPutApiResponse('$baseUrl/Guestuser/Guestuser/$entityId', + entity); print(entity); + + } catch (e) { + throw Exception('Failed to update entity: $e'); + } + } + + Future deleteEntity( int entityId) async { + try { + await _helper.getDeleteApiResponse('$baseUrl/Guestuser/Guestuser/$entityId'); + } catch (e) { + throw Exception('Failed to delete entity: $e'); + } + } + + + + + + + + + + + + + + +} \ No newline at end of file diff --git a/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Guestuser/GuestuserView/Guestuser_create_entity_screen.dart b/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Guestuser/GuestuserView/Guestuser_create_entity_screen.dart new file mode 100644 index 0000000..165df11 --- /dev/null +++ b/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Guestuser/GuestuserView/Guestuser_create_entity_screen.dart @@ -0,0 +1,90 @@ +// ignore_for_file: use_build_context_synchronously +import 'dart:convert'; +import 'package:flutter/material.dart'; +import 'package:file_picker/file_picker.dart'; +import 'package:image_picker/image_picker.dart'; +import 'package:provider/provider.dart'; +import '../Guestuser_viewModel/Guestuser_view_model_screen.dart'; +import 'Guestuser_fields.dart';import 'package:base_project/BuilderField/shared/ui/entity_screens.dart'; +import '../../../../utils/image_constant.dart'; +import '../../../../utils/size_utils.dart'; +import '../../../../theme/app_style.dart'; +import '../../../../widgets/app_bar/appbar_image.dart'; +import '../../../../widgets/app_bar/appbar_title.dart'; +import '../../../../widgets/app_bar/custom_app_bar.dart'; +import '../../../../widgets/custom_button.dart'; +import '../../../../widgets/custom_text_form_field.dart'; +import '../../../../widgets/custom_dropdown_field.dart'; +import 'dart:math'; +import 'package:qr_flutter/qr_flutter.dart'; +import 'package:barcode_widget/barcode_widget.dart'; +import 'package:intl/intl.dart'; + +import 'package:autocomplete_textfield/autocomplete_textfield.dart'; +import 'package:http/http.dart' as http; +import 'package:flutter/services.dart'; +import 'package:image_picker/image_picker.dart'; +import 'package:fluttertoast/fluttertoast.dart'; +import '../../../../Reuseable/reusable_date_picker_field.dart'; +import '../../../../Reuseable/reusable_date_time_picker_field.dart' +;import 'package:multi_select_flutter/multi_select_flutter.dart'; +import 'package:just_audio/just_audio.dart'; +import 'package:video_player/video_player.dart'; +import 'package:google_fonts/google_fonts.dart'; +import 'package:lottie/lottie.dart'; +import '../../../../utils/toast_messages/toast_message_util.dart'; +import 'dart:io'; +import '../../../../Reuseable/reusable_text_field.dart'; +import '../../../../Reuseable/reusable_dropdown_field.dart'; + + + + + + + + + + + + + + +class GuestuserCreateEntityScreen extends StatefulWidget { + const GuestuserCreateEntityScreen({super.key}); + + @override + _GuestuserCreateEntityScreenState createState() => _GuestuserCreateEntityScreenState(); +} + +class _GuestuserCreateEntityScreenState extends State { + +final Map formData = {}; + final _formKey = GlobalKey(); + + @override + Widget build(BuildContext context) { + return Consumer( + builder: (context, viewModel, child) { + return EntityCreateScreen( + fields: GuestuserFields.getFields(context), + onSubmit: (data) => _handleSubmit(data), + title: 'Guestuser', + isLoading: viewModel.isLoading, + errorMessage: + viewModel.errorMessage.isNotEmpty ? viewModel.errorMessage : null, + ); + }, + ); + } + + Future _handleSubmit(Map formData) async { + final provider = + Provider.of(context, listen: false); + final success = await provider.createEntity(formData); + + if (success && mounted) { + Navigator.pop(context); + } + } +} \ No newline at end of file diff --git a/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Guestuser/GuestuserView/Guestuser_details_screen.dart b/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Guestuser/GuestuserView/Guestuser_details_screen.dart new file mode 100644 index 0000000..e478e1e --- /dev/null +++ b/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Guestuser/GuestuserView/Guestuser_details_screen.dart @@ -0,0 +1,98 @@ +// ignore_for_file: use_build_context_synchronously +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import '../../../../BuilderField/shared/ui/entity_details.dart'; +import '../Guestuser_viewModel/Guestuser_view_model_screen.dart'; +import 'Guestuser_update_entity_screen.dart'; + +class GuestuserDetailsScreen extends StatefulWidget { + final Map entity; + + const GuestuserDetailsScreen({ + super.key, + required this.entity, + }); + + @override + State createState() => _GuestuserDetailsScreenState(); +} + +class _GuestuserDetailsScreenState extends State { + void _navigateToUpdateScreen(Map entity) { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => ChangeNotifierProvider( + create: (context) => GuestuserViewModelScreen(), + child: GuestuserUpdateEntityScreen(entity: entity), + ), + ), + ).then((_) { + // Refresh the details screen with updated data + setState(() {}); + }); + } + + void _showDeleteDialog(Map entity) { + showDialog( + context: context, + builder: (BuildContext context) { + return AlertDialog( + title: const Text('Confirm Deletion'), + content: const Text('Are you sure you want to delete this Guestuser?'), + actions: [ + TextButton( + child: const Text('Cancel'), + onPressed: () { + Navigator.of(context).pop(); + }, + ), + TextButton( + child: const Text('Delete'), + onPressed: () async { + Navigator.of(context).pop(); + final vm = + Provider.of(context, listen: false); + final success = await vm.deleteEntity(entity['id']); + if (success && mounted) { + Navigator.pop(context); // Go back to list + } + }, + ), + ], + ); + }, + ); + } + + @override + Widget build(BuildContext context) { + return Consumer( + builder: (context, viewModel, child) { + return EntityDetails( + entity: widget.entity, + onEdit: (entity) => _navigateToUpdateScreen(entity), + onDelete: (entity) => _showDeleteDialog(entity), + title: 'Guestuser', + displayFields: [ + {'key': 'fullname', 'label': 'fullName', 'type': 'text'}, + + {'key': 'active', 'label': 'Active', 'type': 'toggle_switch'}, + + {'key': 'macaddress', 'label': 'macAddress', 'type': 'text'}, + + {'key': 'email', 'label': 'email', 'type': 'email'}, + + {'key': 'mob_no', 'label': 'Mob No', 'type': 'phone'}, + + {'key': 'dateofbirth', 'label': 'dateofbirth', 'type': 'date'}, + + {'key': 'driving_license_no', 'label': 'driving license no', 'type': 'text'}, + + ], + isLoading: viewModel.isLoading, + ); + }, + ); + } +} diff --git a/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Guestuser/GuestuserView/Guestuser_entity_list_screen.dart b/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Guestuser/GuestuserView/Guestuser_entity_list_screen.dart new file mode 100644 index 0000000..61ee0e5 --- /dev/null +++ b/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Guestuser/GuestuserView/Guestuser_entity_list_screen.dart @@ -0,0 +1,158 @@ +// ignore_for_file: use_build_context_synchronously +import 'package:flutter/material.dart'; +import 'package:intl/intl.dart'; +import 'package:base_project/BuilderField/shared/ui/entity_list.dart'; +import 'Guestuser_create_entity_screen.dart'; +import 'Guestuser_update_entity_screen.dart'; +import '../Guestuser_viewModel/Guestuser_view_model_screen.dart'; +import 'Guestuser_details_screen.dart';import 'package:flutter/services.dart'; +import 'package:speech_to_text/speech_to_text.dart' as stt; +import '../../../../theme/app_style.dart'; +import '../../../../utils/size_utils.dart'; +import '../../../../widgets/custom_icon_button.dart'; +import '../../../../utils/image_constant.dart'; +import '../../../../widgets/app_bar/appbar_image.dart'; +import '../../../../widgets/app_bar/appbar_title.dart'; +import '../../../../widgets/app_bar/custom_app_bar.dart'; +import '../../../../theme/app_decoration.dart'; +import 'package:multi_select_flutter/multi_select_flutter.dart'; +import '../../../../Reuseable/reusable_text_field.dart'; +import 'package:provider/provider.dart'; +import '../../../../utils/toast_messages/toast_message_util.dart'; +import 'package:fluttertoast/fluttertoast.dart'; + +class Guestuser_entity_list_screen extends StatefulWidget { + static const String routeName = '/entity-list'; + + @override + _Guestuser_entity_list_screenState createState() => _Guestuser_entity_list_screenState(); +} + +class _Guestuser_entity_list_screenState extends State { + @override + void initState() { + super.initState(); + _loadData(); + } + + void _loadData() { + WidgetsBinding.instance.addPostFrameCallback((_) { + if (mounted) { + final vm = Provider.of(context, listen: false); + vm.getAllWithPagination(refresh: true); + } + }); + } + + void _navigateToCreateScreen() { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => ChangeNotifierProvider( + create: (context) => GuestuserViewModelScreen(), + child: const GuestuserCreateEntityScreen(), + ), + ), + ).then((_) { + final vm = Provider.of(context, listen: false); + vm.refreshData(); + }); + } + + void _navigateToUpdateScreen(Map entity) { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => ChangeNotifierProvider( + create: (context) => GuestuserViewModelScreen(), + child: GuestuserUpdateEntityScreen(entity: entity), + ), + ), + ).then((_) { + final vm = Provider.of(context, listen: false); + vm.refreshData(); + }); + } + + void _navigateToDetailsScreen(Map entity) { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => ChangeNotifierProvider( + create: (context) => GuestuserViewModelScreen(), + child: GuestuserDetailsScreen(entity: entity), + ), + ), + ); + } + + void _showDeleteDialog(Map entity) { + final parentContext = context; + showDialog( + context: context, + builder: (BuildContext context) { + return AlertDialog( + title: const Text('Confirm Deletion'), + content: const Text('Are you sure you want to delete this Guestuser?'), + actions: [ + TextButton( + child: const Text('Cancel'), + onPressed: () { + Navigator.of(context).pop(); + }, + ), + TextButton( + child: const Text('Delete'), + onPressed: () async { + Navigator.of(context).pop(); + final vm = + Provider.of(parentContext, listen: false); + await vm.deleteEntity(entity['id']); + }, + ), + ], + ); + }, + ); + } + + @override + Widget build(BuildContext context) { + return Consumer( + builder: (context, viewModel, child) { + return EntityList( + entities: viewModel.filteredList, + isLoading: viewModel.isLoading, + errorMessage: + viewModel.errorMessage.isNotEmpty ? viewModel.errorMessage : null, + hasMoreData: viewModel.hasMoreData, + searchQuery: viewModel.searchQuery, + onSearchChanged: (query) => viewModel.searchguestuser(query), + onEdit: (entity) => _navigateToUpdateScreen(entity), + onDelete: (entity) => _showDeleteDialog(entity), + onTap: (entity) => _navigateToDetailsScreen(entity), + onRefresh: () => viewModel.refreshData(), + onLoadMore: () => viewModel.getAllWithPagination(), + title: 'Guestuser', + onAddNew: _navigateToCreateScreen, + displayFields: [ + {'key': 'fullname', 'label': 'fullName', 'type': 'text'}, + + {'key': 'active', 'label': 'Active', 'type': 'toggle_switch'}, + + {'key': 'macaddress', 'label': 'macAddress', 'type': 'text'}, + + {'key': 'email', 'label': 'email', 'type': 'email'}, + + {'key': 'mob_no', 'label': 'Mob No', 'type': 'phone'}, + + {'key': 'dateofbirth', 'label': 'dateofbirth', 'type': 'date'}, + + {'key': 'driving_license_no', 'label': 'driving license no', 'type': 'text'}, + + ], + ); + }, + ); + } +} diff --git a/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Guestuser/GuestuserView/Guestuser_fields.dart b/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Guestuser/GuestuserView/Guestuser_fields.dart new file mode 100644 index 0000000..f585b0f --- /dev/null +++ b/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Guestuser/GuestuserView/Guestuser_fields.dart @@ -0,0 +1,106 @@ +import 'package:base_project/BuilderField/shared/fields/number_field.dart'; +import 'package:base_project/BuilderField/shared/fields/password_field.dart'; +import 'package:base_project/BuilderField/shared/fields/phone_field.dart'; +import 'package:base_project/BuilderField/shared/fields/custom_text_field.dart'; + +import '../../../../BuilderField/shared/fields/base_field.dart'; + +import '../../../../BuilderField/shared/fields/date_field.dart'; +import '../../../../BuilderField/shared/fields/datetime_field.dart'; +import '../../../../BuilderField/shared/fields/email_field.dart'; +import 'package:base_project/BuilderField/shared/fields/url_field.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; + +import '../../../../BuilderField/shared/fields/custom_text_field.dart' as shared_text; +import '../../../../BuilderField/shared/fields/one_to_one_relation_field.dart'; +import '../../../../BuilderField/shared/fields/calculated_field.dart'; +import '../../../../BuilderField/shared/fields/one_to_many_field.dart'; +import '../../../../BuilderField/shared/fields/value_list_picker_field.dart'; +import '../../../../BuilderField/shared/fields/captcha_field.dart'; +import '../../../../BuilderField/shared/fields/switch_field.dart'; +import '../../../../BuilderField/shared/fields/url_field.dart'; + +import '../../../../BuilderField/shared/fields/audio_upload_field.dart'; +import '../../../../BuilderField/shared/fields/checkbox_field.dart'; +import '../../../../BuilderField/shared/fields/file_upload_field.dart'; +import '../../../../BuilderField/shared/fields/image_upload_field.dart'; +import '../../../../BuilderField/shared/fields/radio_field.dart'; +import '../../../../BuilderField/shared/fields/video_upload_field.dart'; + +import '../../../../BuilderField/shared/fields/autocomplete_dropdown_field.dart'; +import '../../../../BuilderField/shared/fields/autocomplete_multiselect_field.dart'; +import '../../../../BuilderField/shared/fields/one_to_one_relation_field.dart'; +import '../../../../BuilderField/shared/fields/data_grid_field.dart'; +import '../../../../BuilderField/shared/fields/dropdown_field.dart'; +import '../../../../BuilderField/shared/fields/dynamic_dropdown_field.dart'; +import '../../../../BuilderField/shared/fields/dynamic_multiselect_dropdown_field.dart'; +import '../../../../BuilderField/shared/fields/static_multiselect_field.dart'; +import '../../../../BuilderField/shared/fields/currency_field.dart'; +import '../../../../BuilderField/shared/fields/field_group_field.dart'; +import '../../../../BuilderField/shared/fields/qr_code_field.dart'; +import '../../../../BuilderField/shared/fields/barcode_field.dart'; +import '../../../../BuilderField/shared/fields/dependent_dropdown_field.dart'; + import '../Guestuser_viewModel/Guestuser_view_model_screen.dart';/// Field definitions for Guestuser entity +/// This defines the structure and validation for Guestuser forms +class GuestuserFields { + /// Get field definitions for Guestuser entity + static List getFields(BuildContext context) { + final viewModel = + Provider.of(context, listen: false); + return [ + // Basic Information + CustomTextField( + fieldKey: 'fullname', + label: 'fullName', + hint: 'Enter fullName', + isRequired: true, + maxLength: 50, + ), + + SwitchField( + fieldKey: 'active', + label: 'Active', + ), + + CustomTextField( + fieldKey: 'macaddress', + label: 'macAddress', + hint: 'Enter macAddress', + isRequired: true, + maxLength: 50, + ), + +EmailField( + fieldKey: 'email', + label: 'email', + hint: 'Enter email', + isRequired: false, + ), + + PhoneField( + fieldKey: 'mob_no', + label: 'Mob No', + hint: 'Enter Mob No', + isRequired: false, + countryCode: '+91', + ), + + DateField( + fieldKey: 'dateofbirth', + label: 'dateofbirth', + hint: 'Select dateofbirth', + isRequired: false, + ), + + CustomTextField( + fieldKey: 'driving_license_no', + label: 'driving license no', + hint: 'Enter driving license no', + isRequired: true, + maxLength: 50, + ), + + ]; + } +} diff --git a/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Guestuser/GuestuserView/Guestuser_update_entity_screen.dart b/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Guestuser/GuestuserView/Guestuser_update_entity_screen.dart new file mode 100644 index 0000000..f64871a --- /dev/null +++ b/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Guestuser/GuestuserView/Guestuser_update_entity_screen.dart @@ -0,0 +1,85 @@ +// ignore_for_file: use_build_context_synchronously +import 'dart:convert'; +import 'package:provider/provider.dart'; +import '../Guestuser_viewModel/Guestuser_view_model_screen.dart'; +import 'package:base_project/BuilderField/shared/ui/entity_screens.dart'; +import 'Guestuser_fields.dart';import '../../../../utils/image_constant.dart'; +import '../../../../utils/size_utils.dart'; +import '../../../../theme/app_style.dart'; +import '../../../../widgets/app_bar/appbar_image.dart'; +import '../../../../widgets/app_bar/appbar_title.dart'; +import '../../../../widgets/app_bar/custom_app_bar.dart'; +import 'package:barcode_widget/barcode_widget.dart'; +import 'package:fluttertoast/fluttertoast.dart'; +import '../../../../widgets/custom_button.dart'; +import '../../../../widgets/custom_text_form_field.dart'; +import 'package:flutter/material.dart'; +import 'package:autocomplete_textfield/autocomplete_textfield.dart'; +import 'package:qr_flutter/qr_flutter.dart'; +import 'package:intl/intl.dart'; + +import 'dart:math'; +import '../../../../Reuseable/reusable_text_field.dart'; +import '../../../../Reuseable/reusable_date_picker_field.dart'; +import '../../../../Reuseable/reusable_date_time_picker_field.dart'; +import '../../../../Reuseable/reusable_dropdown_field.dart'; +import 'package:flutter/services.dart'; +class GuestuserUpdateEntityScreen extends StatefulWidget { + final Map entity; + + + GuestuserUpdateEntityScreen({required this.entity}); + + @override + _GuestuserUpdateEntityScreenState createState() => _GuestuserUpdateEntityScreenState(); +} + +class _GuestuserUpdateEntityScreenState extends State { + final _formKey = GlobalKey(); + +@override + Widget build(BuildContext context) { + return Consumer( + builder: (context, viewModel, child) { +// Start with all fields, then remove upload fields (generic filter by keys) + final Set hiddenKeys = { + + + + + + + + + + + + + + + }; + final fields = GuestuserFields.getFields(context) + .where((f) => !hiddenKeys.contains(f.fieldKey)) + .toList(); return EntityUpdateScreen( + fields: fields, + initialData: widget.entity, + onSubmit: (data) => _handleSubmit(data), + title: 'Guestuser', + isLoading: viewModel.isLoading, + errorMessage: + viewModel.errorMessage.isNotEmpty ? viewModel.errorMessage : null, + ); + }, + ); + } + + Future _handleSubmit(Map formData) async { + final provider = + Provider.of(context, listen: false); + final success = await provider.updateEntity(widget.entity['id'], formData); + + if (success && mounted) { + Navigator.pop(context); + } + } +} diff --git a/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Guestuser/Guestuser_Repo/Guestuser_repo_screen.dart b/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Guestuser/Guestuser_Repo/Guestuser_repo_screen.dart new file mode 100644 index 0000000..3a004bf --- /dev/null +++ b/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Guestuser/Guestuser_Repo/Guestuser_repo_screen.dart @@ -0,0 +1,103 @@ +import 'package:dio/dio.dart'; +import '../../../../data/network/base_network_service.dart'; +import '../../../../data/network/network_api_service.dart'; +import '../../../../resources/api_constants.dart'; +import 'package:base_project/data/response/api_response.dart'; + +class GuestuserRepoScreen { + + final String baseUrl = ApiConstants.baseUrl; + final BaseNetworkService _helper = NetworkApiService(); + final String _endpointPath = '/Guestuser/Guestuser'; + + Future>>> getEntities() async { + try { + final response = + await _helper.getGetApiResponse('$baseUrl$_endpointPath'); + print('Response received: $response'); + List> entities = const []; + if (response is List) { + entities = response + .whereType() + .map((e) => Map.from(e as Map)) + .toList(); + } else if (response is Map) { + final dynamic content = response['content']; + if (content is List) { + entities = content + .whereType() + .map((e) => Map.from(e as Map)) + .toList(); + } + } + return ApiResponse.success(entities); + } catch (e) { + print(' error got $e'); + return ApiResponse.error('Failed to get all entities: $e'); + } + } + + Future>>> getAllWithPagination( + int page, int size) async { + try { + final response = await _helper.getGetApiResponse( + '$baseUrl$_endpointPath/getall/page?page=$page&size=$size'); + + if (response is Map && response['content'] is List) { + final List> entities = + (response['content'] as List).cast>().toList(); + return ApiResponse.success(entities); + } else { + return ApiResponse.error('Invalid response format'); + } + } catch (e) { + return ApiResponse.error('Failed to get all without pagination: $e'); + } + } + + Future>> createEntity( + Map entity) async { + try { + print("in post api$entity"); + final response = + await _helper.getPostApiResponse('$baseUrl$_endpointPath', entity); + return ApiResponse.success(response as Map); + } catch (e) { + return ApiResponse.error('Failed to create entity: $e'); + } + } + + Future>> updateEntity( + int entityId, Map entity) async { + try { + final response = await _helper.getPutApiResponse( + '$baseUrl$_endpointPath/$entityId', entity); + return ApiResponse.success(response as Map); + } catch (e) { + return ApiResponse.error('Failed to update entity: $e'); + } + } + + Future> deleteEntity(int entityId) async { + try { + await _helper.getDeleteApiResponse('$baseUrl$_endpointPath/$entityId'); + return ApiResponse.success(null); + } catch (e) { + return ApiResponse.error('Failed to delete entity: $e'); + } + } + + + + + + + + + + + + + + +} diff --git a/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Guestuser/Guestuser_viewModel/Guestuser_view_model_screen.dart b/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Guestuser/Guestuser_viewModel/Guestuser_view_model_screen.dart new file mode 100644 index 0000000..ad62500 --- /dev/null +++ b/tesitest1-front-f/authsec_flutter_new/base_project/lib/Entity/taxi_rental/Guestuser/Guestuser_viewModel/Guestuser_view_model_screen.dart @@ -0,0 +1,369 @@ +import 'package:base_project/data/response/status.dart'; +import 'dart:typed_data'; +import 'package:dio/dio.dart'; +import 'package:http_parser/http_parser.dart'; +import '../../../../utils/toast_messages/toast_message_util.dart'; +import '../../../../BuilderField/shared/utils/entity_field_store.dart'; +import 'package:flutter/material.dart'; +import '../Guestuser_Repo/Guestuser_repo_screen.dart'; + +class GuestuserViewModelScreen extends ChangeNotifier{ + final GuestuserRepoScreen repo = GuestuserRepoScreen(); + + + // State variables + List> _guestuserList = []; + List> _filteredList = []; + bool _isLoading = false; + String _errorMessage = ''; + int _currentPage = 0; + int _pageSize = 10; + bool _hasMoreData = true; + String _searchQuery = ''; + + // Getters + List> get guestuserList => _guestuserList; + List> get filteredList => _filteredList; + bool get isLoading => _isLoading; + String get errorMessage => _errorMessage; + bool get hasMoreData => _hasMoreData; + String get searchQuery => _searchQuery; + + // Set loading state + void _setLoading(bool loading) { + _isLoading = loading; + notifyListeners(); + } + + // Set error message + void _setError(String error) { + _errorMessage = error; + notifyListeners(); + } + + // Clear error + void clearError() { + _errorMessage = ''; + notifyListeners(); + } + + // Get guestuser list + Future getEntities() async { + _setLoading(true); + _setError(''); + + try { + final response = await repo.getEntities(); + + if (response.status == Status.SUCCESS) { + _guestuserList = response.data ?? []; + _filteredList = List.from(_guestuserList); + _currentPage = 0; + _hasMoreData = true; + } else { + _setError(response.message ?? 'Failed to fetch guestuser list'); + } + } catch (e) { + _setError('Failed to fetch guestuser list: $e'); + } finally { + _setLoading(false); + } + } + + // Get guestuser list with pagination + Future getAllWithPagination({bool refresh = false}) async { + if (refresh) { + _currentPage = 0; + _guestuserList.clear(); + _filteredList.clear(); + _hasMoreData = true; + } + + if (!_hasMoreData || _isLoading) return; + + _setLoading(true); + _setError(''); + + try { + final response = await repo.getAllWithPagination(_currentPage, _pageSize); + + if (response.status == Status.SUCCESS) { + final newItems = response.data ?? []; + + if (refresh) { + _guestuserList = newItems; + } else { + _guestuserList.addAll(newItems); + } + + _filteredList = List.from(_guestuserList); + _currentPage++; + + // Check if we have more data + _hasMoreData = newItems.length == _pageSize; + } else { + _setError(response.message ?? 'Failed to fetch Guestuser list'); + } + } catch (e) { + _setError('Failed to fetch guestuser list: $e'); + } finally { + _setLoading(false); + } + } + + + + + + + + + + + + + + + + // Create Guestuser + Future createEntity(Map entity) async { + _setLoading(true); + _setError(''); + + try { + + + + + + + + + + + + + + + final response = await repo.createEntity(entity); + + if (response.status == Status.SUCCESS) { +// Get the response ID for image upload + + final responseId = response.data!['id'].toString(); + + + + + + + + + + + + + + + ToastMessageUtil.showToast( + message: 'guestuser created successfully', + toastType: ToastType.success, + ); + + // Refresh the list + await getEntities(); + + + + + + + + + + + + + + + return true; + } else { + _setError(response.message ?? 'Failed to create Guestuser'); + ToastMessageUtil.showToast( + message: response.message ?? 'Failed to create Guestuser', + toastType: ToastType.error, + ); + return false; + } + } catch (e) { + _setError('Failed to create guestuser: $e'); + ToastMessageUtil.showToast( + message: 'Failed to create Guestuser: $e', + toastType: ToastType.error, + ); + return false; + } finally { + _setLoading(false); + } + } + + // Update guestuser + Future updateEntity(int id, Map entity) async { + _setLoading(true); + _setError(''); + + try { + final response = await repo.updateEntity(id, entity); + + if (response.status == Status.SUCCESS) { + ToastMessageUtil.showToast( + message: 'Guestuser updated successfully', + toastType: ToastType.success, + ); + + // Update the item in the list + final index = _guestuserList.indexWhere((item) => item['id'] == id); + if (index != -1) { + _guestuserList[index] = response.data!; + _filteredList = List.from(_guestuserList); + notifyListeners(); + } + return true; + } else { + _setError(response.message ?? 'Failed to update Guestuser'); + ToastMessageUtil.showToast( + message: response.message ?? 'Failed to update Guestuser', + toastType: ToastType.error, + ); + return false; + } + } catch (e) { + _setError('Failed to update guestuser: $e'); + ToastMessageUtil.showToast( + message: 'Failed to update Guestuser: $e', + toastType: ToastType.error, + ); + return false; + } finally { + _setLoading(false); + } + } + + // Delete guestuser + Future deleteEntity(int id) async { + _setLoading(true); + _setError(''); + + try { + final response = await repo.deleteEntity(id); + + if (response.status == Status.SUCCESS) { + ToastMessageUtil.showToast( + message: 'Guestuser deleted successfully', + toastType: ToastType.success, + ); + + // Remove the item from the list + _guestuserList.removeWhere((item) => item['id'] == id); + _filteredList = List.from(_guestuserList); + notifyListeners(); + return true; + } else { + _setError(response.message ?? 'Failed to delete Guestuser'); + ToastMessageUtil.showToast( + message: response.message ?? 'Failed to delete Guestuser', + toastType: ToastType.error, + ); + return false; + } + } catch (e) { + _setError('Failed to delete guestuser: $e'); + ToastMessageUtil.showToast( + message: 'Failed to delete Guestuser: $e', + toastType: ToastType.error, + ); + return false; + } finally { + _setLoading(false); + } + } + + // Search guestuser + void searchguestuser(String query) { + _searchQuery = query; + + if (query.isEmpty) { + _filteredList = List.from(_guestuserList); + } else { + _filteredList = _guestuserList.where((item) { + return + + +(item['fullname']?.toString().toLowerCase().contains(query.toLowerCase()) ??false) || + + +(item['active']?.toString().toLowerCase().contains(query.toLowerCase()) ??false) || + + + + + +(item['macaddress']?.toString().toLowerCase().contains(query.toLowerCase()) ??false) || + + + + + +(item['email']?.toString().toLowerCase().contains(query.toLowerCase()) ??false) || + + + + + +(item['mob_no']?.toString().toLowerCase().contains(query.toLowerCase()) ??false) || + + + + + +(item['dateofbirth']?.toString().toLowerCase().contains(query.toLowerCase()) ??false) || + + + + + +(item['driving_license_no']?.toString().toLowerCase().contains(query.toLowerCase()) ??false) + + +; + }).toList(); + } + notifyListeners(); + } + + // Clear search + void clearSearch() { + _searchQuery = ''; + _filteredList = List.from(_guestuserList); + notifyListeners(); + } + + // Refresh data + Future refreshData() async { + await getAllWithPagination(refresh: true); + } + + + + + + + + + + + + + + +} \ No newline at end of file diff --git a/tesitest1-front-f/authsec_flutter_new/base_project/lib/view/dashboard/home.dart b/tesitest1-front-f/authsec_flutter_new/base_project/lib/view/dashboard/home.dart index 0b2aa88..894a2b3 100644 --- a/tesitest1-front-f/authsec_flutter_new/base_project/lib/view/dashboard/home.dart +++ b/tesitest1-front-f/authsec_flutter_new/base_project/lib/view/dashboard/home.dart @@ -1,5 +1,12 @@ -import '../../Entity/taxi_rental/Products/ProductsView/Products_entity_list_screen.dart'; -import '../../Entity/taxi_rental/Products/Products_viewModel/Products_view_model_screen.dart'; +import '../../Entity/taxi_rental/Guestuser/GuestuserView/Guestuser_entity_list_screen.dart'; +import '../../Entity/taxi_rental/Guestuser/Guestuser_viewModel/Guestuser_view_model_screen.dart'; + +import '../../Entity/taxi_rental/Coupon/CouponView/Coupon_entity_list_screen.dart'; +import '../../Entity/taxi_rental/Coupon/Coupon_viewModel/Coupon_view_model_screen.dart'; + + +import '../../Entity/taxi_rental/Products/ProductsView/Products_entity_list_screen.dart'; +import '../../Entity/taxi_rental/Products/Products_viewModel/Products_view_model_screen.dart'; import '../../Entity/taxi_rental/Rides/RidesView/Rides_entity_list_screen.dart'; import '../../Entity/taxi_rental/Rides/Rides_viewModel/Rides_view_model_screen.dart'; @@ -116,21 +123,57 @@ Navigator.pushNamed(context, RouteNames.changePasswordView); // NEW MENU DrawerItem( icon: Icons.data_object, - title: 'Products Management', - subtitle: 'Manage Products entities', + title: 'Guestuser Management', + subtitle: 'Manage Guestuser entities', onTap: (context) { Navigator.push( context, MaterialPageRoute( builder: (context) => ChangeNotifierProvider( - create: (context) => ProductsViewModelScreen(), - child: Products_entity_list_screen(), + create: (context) => GuestuserViewModelScreen(), + child: Guestuser_entity_list_screen(), ), ), ); }, ), +DrawerItem( +icon: Icons.data_object, +title: 'Coupon Management', +subtitle: 'Manage Coupon entities', +onTap: (context) { +Navigator.push( +context, +MaterialPageRoute( +builder: (context) => ChangeNotifierProvider( +create: (context) => CouponViewModelScreen(), +child: Coupon_entity_list_screen(), +), +), +); +}, +), + + + +DrawerItem( +icon: Icons.data_object, +title: 'Products Management', +subtitle: 'Manage Products entities', +onTap: (context) { +Navigator.push( +context, +MaterialPageRoute( +builder: (context) => ChangeNotifierProvider( +create: (context) => ProductsViewModelScreen(), +child: Products_entity_list_screen(), +), +), +); +}, +), + DrawerItem( icon: Icons.data_object, title: 'Rides Management',