build_app

This commit is contained in:
risadmin_prod 2025-09-23 04:45:39 +00:00
parent 4c40852677
commit 9a99b63a92
38 changed files with 3016 additions and 65 deletions

View File

@ -69,6 +69,15 @@ public class BuilderService {
executeDump(true); executeDump(true);
// ADD OTHER SERVICE // ADD OTHER SERVICE
addCustomMenu( "Guestuser","Guestuser", "Transcations");
addCustomMenu( "Coupon","Coupon", "Transcations");
addCustomMenu( "Feature","Feature", "Transcations");
addCustomMenu( "Products","Products", "Transcations"); addCustomMenu( "Products","Products", "Transcations");

View File

@ -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<Coupon> getall(@RequestParam(value = "page", required = false) Integer page,
@RequestParam(value = "size", required = false) Integer size) {
Pageable paging = PageRequest.of(page, size);
Page<Coupon> get = Service.getAllWithPagination(paging);
return get;
}
@GetMapping("/Coupon")
public List<Coupon> getdetails() {
List<Coupon> get = Service.getdetails();
return get;
}
// get all without authentication
@GetMapping("/token/Coupon")
public List<Coupon> getallwioutsec() {
List<Coupon> 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);
}
}

View File

@ -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<Guestuser> getall(@RequestParam(value = "page", required = false) Integer page,
@RequestParam(value = "size", required = false) Integer size) {
Pageable paging = PageRequest.of(page, size);
Page<Guestuser> get = Service.getAllWithPagination(paging);
return get;
}
@GetMapping("/Guestuser")
public List<Guestuser> getdetails() {
List<Guestuser> get = Service.getdetails();
return get;
}
// get all without authentication
@GetMapping("/token/Guestuser")
public List<Guestuser> getallwioutsec() {
List<Guestuser> 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);
}
}

View File

@ -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<Coupon> getall(@RequestParam(value = "page", required = false) Integer page,
@RequestParam(value = "size", required = false) Integer size) {
Pageable paging = PageRequest.of(page, size);
Page<Coupon> get = Service.getAllWithPagination(paging);
return get;
}
@GetMapping("/Coupon")
public List<Coupon> getdetails() {
List<Coupon> get = Service.getdetails();
return get;
}
// get all without authentication
@GetMapping("/token/Coupon")
public List<Coupon> getallwioutsec() {
List<Coupon> 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);
}
}

View File

@ -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<Guestuser> getall(@RequestParam(value = "page", required = false) Integer page,
@RequestParam(value = "size", required = false) Integer size) {
Pageable paging = PageRequest.of(page, size);
Page<Guestuser> get = Service.getAllWithPagination(paging);
return get;
}
@GetMapping("/Guestuser")
public List<Guestuser> getdetails() {
List<Guestuser> get = Service.getdetails();
return get;
}
// get all without authentication
@GetMapping("/token/Guestuser")
public List<Guestuser> getallwioutsec() {
List<Guestuser> 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);
}
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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<Coupon, Integer> {
@Query(value = "select * from coupon where created_by=?1", nativeQuery = true)
List<Coupon> findAll(Long creayedBy);
@Query(value = "select * from coupon where created_by=?1", nativeQuery = true)
Page<Coupon> findAll( Long creayedBy,Pageable page);
}

View File

@ -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<Guestuser, Integer> {
@Query(value = "select * from guestuser where created_by=?1", nativeQuery = true)
List<Guestuser> findAll(Long creayedBy);
@Query(value = "select * from guestuser where created_by=?1", nativeQuery = true)
Page<Guestuser> findAll( Long creayedBy,Pageable page);
}

View File

@ -21,15 +21,13 @@ private Car_categoryRepository Repository;
List<Car_category> list= Repository.findAll(); List<Car_category> list= Repository.findAll();
ArrayList<Car_category_ListFilter1> l = new ArrayList<>(); ArrayList<Car_category_ListFilter1> l = new ArrayList<>();
for (Car_category data : list) { for (Car_category data : list) {
boolean isactive = data.getActive(); {
if (isactive) {{
Car_category_ListFilter1 dummy = new Car_category_ListFilter1(); Car_category_ListFilter1 dummy = new Car_category_ListFilter1();
dummy.setId(data.getId()); dummy.setId(data.getId());
dummy.setName(data.getName()); dummy.setName(data.getName());
dummy.setDescription(data.getDescription()); dummy.setDescription(data.getDescription());
l.add(dummy); l.add(dummy);
}} }
} }
return l;} return l;}
@ -39,15 +37,13 @@ return l;}
List<Car_category> list= Repository.findAll(); List<Car_category> list= Repository.findAll();
ArrayList<Car_category_ListFilter1> l = new ArrayList<>(); ArrayList<Car_category_ListFilter1> l = new ArrayList<>();
for (Car_category data : list) { for (Car_category data : list) {
boolean isactive = data.getActive(); {
if (isactive) {{
Car_category_ListFilter1 dummy = new Car_category_ListFilter1(); Car_category_ListFilter1 dummy = new Car_category_ListFilter1();
dummy.setId(data.getId()); dummy.setId(data.getId());
dummy.setName(data.getName()); dummy.setName(data.getName());
dummy.setDescription(data.getDescription()); dummy.setDescription(data.getDescription());
l.add(dummy); l.add(dummy);
}} }
} }
return l;} return l;}
} }

View File

@ -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<Coupon> getAllWithPagination(Pageable page) {
return Repository.findAll( getUser().getUserId(),page);
}
public List<Coupon> getdetails() {
List<Realm> realm = realmService.findByUserId(getUser().getUserId());
List<Coupon> 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;
}}

View File

@ -21,9 +21,7 @@ private Custom_settingRepository Repository;
List<Custom_setting> list= Repository.findAll(); List<Custom_setting> list= Repository.findAll();
ArrayList<Custom_setting_ListFilter1> l = new ArrayList<>(); ArrayList<Custom_setting_ListFilter1> l = new ArrayList<>();
for (Custom_setting data : list) { for (Custom_setting data : list) {
boolean isactive = data.getActive(); {
if (isactive) {{
Custom_setting_ListFilter1 dummy = new Custom_setting_ListFilter1(); Custom_setting_ListFilter1 dummy = new Custom_setting_ListFilter1();
dummy.setId(data.getId()); dummy.setId(data.getId());
dummy.setName(data.getName()); dummy.setName(data.getName());
@ -35,7 +33,7 @@ Custom_setting_ListFilter1 dummy = new Custom_setting_ListFilter1();
dummy.setPst_rate(data.getPst_rate()); dummy.setPst_rate(data.getPst_rate());
dummy.setAge_threshold(data.getAge_threshold()); dummy.setAge_threshold(data.getAge_threshold());
l.add(dummy); l.add(dummy);
}} }
} }
return l;} return l;}
@ -45,9 +43,7 @@ return l;}
List<Custom_setting> list= Repository.findAll(); List<Custom_setting> list= Repository.findAll();
ArrayList<Custom_setting_ListFilter1> l = new ArrayList<>(); ArrayList<Custom_setting_ListFilter1> l = new ArrayList<>();
for (Custom_setting data : list) { for (Custom_setting data : list) {
boolean isactive = data.getActive(); {
if (isactive) {{
Custom_setting_ListFilter1 dummy = new Custom_setting_ListFilter1(); Custom_setting_ListFilter1 dummy = new Custom_setting_ListFilter1();
dummy.setId(data.getId()); dummy.setId(data.getId());
dummy.setName(data.getName()); dummy.setName(data.getName());
@ -59,7 +55,7 @@ Custom_setting_ListFilter1 dummy = new Custom_setting_ListFilter1();
dummy.setPst_rate(data.getPst_rate()); dummy.setPst_rate(data.getPst_rate());
dummy.setAge_threshold(data.getAge_threshold()); dummy.setAge_threshold(data.getAge_threshold());
l.add(dummy); l.add(dummy);
}} }
} }
return l;} return l;}
} }

View File

@ -21,9 +21,9 @@ private FeatureRepository Repository;
List<Feature> list= Repository.findAll(); List<Feature> list= Repository.findAll();
ArrayList<Feature_ListFilter1> l = new ArrayList<>(); ArrayList<Feature_ListFilter1> l = new ArrayList<>();
for (Feature data : list) { 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(); Feature_ListFilter1 dummy = new Feature_ListFilter1();
dummy.setId(data.getId()); dummy.setId(data.getId());
dummy.setName(data.getName()); dummy.setName(data.getName());
@ -39,9 +39,9 @@ return l;}
List<Feature> list= Repository.findAll(); List<Feature> list= Repository.findAll();
ArrayList<Feature_ListFilter1> l = new ArrayList<>(); ArrayList<Feature_ListFilter1> l = new ArrayList<>();
for (Feature data : list) { 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(); Feature_ListFilter1 dummy = new Feature_ListFilter1();
dummy.setId(data.getId()); dummy.setId(data.getId());
dummy.setName(data.getName()); dummy.setName(data.getName());

View File

@ -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<Guestuser> getAllWithPagination(Pageable page) {
return Repository.findAll( getUser().getUserId(),page);
}
public List<Guestuser> getdetails() {
List<Realm> realm = realmService.findByUserId(getUser().getUserId());
List<Guestuser> 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;
}}

View File

@ -21,14 +21,12 @@ private OfficeRepository Repository;
List<Office> list= Repository.findAll(); List<Office> list= Repository.findAll();
ArrayList<Office_ListFilter1> l = new ArrayList<>(); ArrayList<Office_ListFilter1> l = new ArrayList<>();
for (Office data : list) { for (Office data : list) {
boolean isactive = data.getActive(); {
if (isactive) {{
Office_ListFilter1 dummy = new Office_ListFilter1(); Office_ListFilter1 dummy = new Office_ListFilter1();
dummy.setId(data.getId()); dummy.setId(data.getId());
dummy.setName(data.getName()); dummy.setName(data.getName());
l.add(dummy); l.add(dummy);
}} }
} }
return l;} return l;}
@ -38,14 +36,12 @@ return l;}
List<Office> list= Repository.findAll(); List<Office> list= Repository.findAll();
ArrayList<Office_ListFilter1> l = new ArrayList<>(); ArrayList<Office_ListFilter1> l = new ArrayList<>();
for (Office data : list) { for (Office data : list) {
boolean isactive = data.getActive(); {
if (isactive) {{
Office_ListFilter1 dummy = new Office_ListFilter1(); Office_ListFilter1 dummy = new Office_ListFilter1();
dummy.setId(data.getId()); dummy.setId(data.getId());
dummy.setName(data.getName()); dummy.setName(data.getName());
l.add(dummy); l.add(dummy);
}} }
} }
return l;} return l;}
} }

View File

@ -21,9 +21,7 @@ private ProductsRepository Repository;
List<Products> list= Repository.findAll(); List<Products> list= Repository.findAll();
ArrayList<Products_ListFilter1> l = new ArrayList<>(); ArrayList<Products_ListFilter1> l = new ArrayList<>();
for (Products data : list) { for (Products data : list) {
boolean isactive = data.getActive(); {
if (isactive) {{
Products_ListFilter1 dummy = new Products_ListFilter1(); Products_ListFilter1 dummy = new Products_ListFilter1();
dummy.setId(data.getId()); dummy.setId(data.getId());
dummy.setName(data.getName()); dummy.setName(data.getName());
@ -31,7 +29,7 @@ Products_ListFilter1 dummy = new Products_ListFilter1();
dummy.setFeatures(data.getFeatures()); dummy.setFeatures(data.getFeatures());
dummy.setDescription(data.getDescription()); dummy.setDescription(data.getDescription());
l.add(dummy); l.add(dummy);
}} }
} }
return l;} return l;}
@ -41,9 +39,7 @@ return l;}
List<Products> list= Repository.findAll(); List<Products> list= Repository.findAll();
ArrayList<Products_ListFilter1> l = new ArrayList<>(); ArrayList<Products_ListFilter1> l = new ArrayList<>();
for (Products data : list) { for (Products data : list) {
boolean isactive = data.getActive(); {
if (isactive) {{
Products_ListFilter1 dummy = new Products_ListFilter1(); Products_ListFilter1 dummy = new Products_ListFilter1();
dummy.setId(data.getId()); dummy.setId(data.getId());
dummy.setName(data.getName()); dummy.setName(data.getName());
@ -51,7 +47,7 @@ Products_ListFilter1 dummy = new Products_ListFilter1();
dummy.setFeatures(data.getFeatures()); dummy.setFeatures(data.getFeatures());
dummy.setDescription(data.getDescription()); dummy.setDescription(data.getDescription());
l.add(dummy); l.add(dummy);
}} }
} }
return l;} return l;}
} }

View File

@ -21,9 +21,7 @@ private Vehicle_add_onRepository Repository;
List<Vehicle_add_on> list= Repository.findAll(); List<Vehicle_add_on> list= Repository.findAll();
ArrayList<Vehicle_add_on_ListFilter1> l = new ArrayList<>(); ArrayList<Vehicle_add_on_ListFilter1> l = new ArrayList<>();
for (Vehicle_add_on data : list) { for (Vehicle_add_on data : list) {
boolean isactive = data.getActive(); {
if (isactive) {{
Vehicle_add_on_ListFilter1 dummy = new Vehicle_add_on_ListFilter1(); Vehicle_add_on_ListFilter1 dummy = new Vehicle_add_on_ListFilter1();
dummy.setId(data.getId()); dummy.setId(data.getId());
dummy.setName(data.getName()); 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_day(data.getPrice_per_day());
dummy.setPrice_per_trip(data.getPrice_per_trip()); dummy.setPrice_per_trip(data.getPrice_per_trip());
l.add(dummy); l.add(dummy);
}} }
} }
return l;} return l;}
@ -41,9 +39,7 @@ return l;}
List<Vehicle_add_on> list= Repository.findAll(); List<Vehicle_add_on> list= Repository.findAll();
ArrayList<Vehicle_add_on_ListFilter1> l = new ArrayList<>(); ArrayList<Vehicle_add_on_ListFilter1> l = new ArrayList<>();
for (Vehicle_add_on data : list) { for (Vehicle_add_on data : list) {
boolean isactive = data.getActive(); {
if (isactive) {{
Vehicle_add_on_ListFilter1 dummy = new Vehicle_add_on_ListFilter1(); Vehicle_add_on_ListFilter1 dummy = new Vehicle_add_on_ListFilter1();
dummy.setId(data.getId()); dummy.setId(data.getId());
dummy.setName(data.getName()); 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_day(data.getPrice_per_day());
dummy.setPrice_per_trip(data.getPrice_per_trip()); dummy.setPrice_per_trip(data.getPrice_per_trip());
l.add(dummy); l.add(dummy);
}} }
} }
return l;} return l;}
} }

View File

@ -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.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.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));
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));

View File

@ -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<List<Map<String, dynamic>>> getEntities() async {
try {
final response = await _helper.getGetApiResponse('$baseUrl/Coupon/Coupon');
final entities = (response as List).cast<Map<String, dynamic>>();
return entities;
} catch (e) {
throw Exception('Failed to get all entities: $e');
}
}
Future<List<Map<String, dynamic>>> 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<Map<String, dynamic>>();
return entities;
} catch (e) {
throw Exception('Failed to get all without pagination: $e');
}
}
Future<Map<String, dynamic>> createEntity(
Map<String, dynamic> 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<String, dynamic>
Map<String, dynamic> responseData = response;
return responseData;
} catch (e) {
throw Exception('Failed to create entity: $e');
}
}
Future<void> updateEntity( int entityId, Map<String, dynamic> entity) async {
try {
await _helper.getPutApiResponse('$baseUrl/Coupon/Coupon/$entityId',
entity); print(entity);
} catch (e) {
throw Exception('Failed to update entity: $e');
}
}
Future<void> deleteEntity( int entityId) async {
try {
await _helper.getDeleteApiResponse('$baseUrl/Coupon/Coupon/$entityId');
} catch (e) {
throw Exception('Failed to delete entity: $e');
}
}
}

View File

@ -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<CouponCreateEntityScreen> {
final Map<String, dynamic> formData = {};
final _formKey = GlobalKey<FormState>();
@override
Widget build(BuildContext context) {
return Consumer<CouponViewModelScreen>(
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<void> _handleSubmit(Map<String, dynamic> formData) async {
final provider =
Provider.of<CouponViewModelScreen>(context, listen: false);
final success = await provider.createEntity(formData);
if (success && mounted) {
Navigator.pop(context);
}
}
}

View File

@ -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<String, dynamic> entity;
const CouponDetailsScreen({
super.key,
required this.entity,
});
@override
State<CouponDetailsScreen> createState() => _CouponDetailsScreenState();
}
class _CouponDetailsScreenState extends State<CouponDetailsScreen> {
void _navigateToUpdateScreen(Map<String, dynamic> 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<String, dynamic> 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<CouponViewModelScreen>(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<CouponViewModelScreen>(
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,
);
},
);
}
}

View File

@ -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<Coupon_entity_list_screen> {
@override
void initState() {
super.initState();
_loadData();
}
void _loadData() {
WidgetsBinding.instance.addPostFrameCallback((_) {
if (mounted) {
final vm = Provider.of<CouponViewModelScreen>(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<CouponViewModelScreen>(context, listen: false);
vm.refreshData();
});
}
void _navigateToUpdateScreen(Map<String, dynamic> entity) {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => ChangeNotifierProvider(
create: (context) => CouponViewModelScreen(),
child: CouponUpdateEntityScreen(entity: entity),
),
),
).then((_) {
final vm = Provider.of<CouponViewModelScreen>(context, listen: false);
vm.refreshData();
});
}
void _navigateToDetailsScreen(Map<String, dynamic> entity) {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => ChangeNotifierProvider(
create: (context) => CouponViewModelScreen(),
child: CouponDetailsScreen(entity: entity),
),
),
);
}
void _showDeleteDialog(Map<String, dynamic> 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<CouponViewModelScreen>(parentContext, listen: false);
await vm.deleteEntity(entity['id']);
},
),
],
);
},
);
}
@override
Widget build(BuildContext context) {
return Consumer<CouponViewModelScreen>(
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'},
],
);
},
);
}
}

View File

@ -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<BaseField> getFields(BuildContext context) {
final viewModel =
Provider.of<CouponViewModelScreen>(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',
),
];
}
}

View File

@ -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<String, dynamic> entity;
CouponUpdateEntityScreen({required this.entity});
@override
_CouponUpdateEntityScreenState createState() => _CouponUpdateEntityScreenState();
}
class _CouponUpdateEntityScreenState extends State<CouponUpdateEntityScreen> {
final _formKey = GlobalKey<FormState>();
@override
Widget build(BuildContext context) {
return Consumer<CouponViewModelScreen>(
builder: (context, viewModel, child) {
// Start with all fields, then remove upload fields (generic filter by keys)
final Set<String> 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<void> _handleSubmit(Map<String, dynamic> formData) async {
final provider =
Provider.of<CouponViewModelScreen>(context, listen: false);
final success = await provider.updateEntity(widget.entity['id'], formData);
if (success && mounted) {
Navigator.pop(context);
}
}
}

View File

@ -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<ApiResponse<List<Map<String, dynamic>>>> getEntities() async {
try {
final response =
await _helper.getGetApiResponse('$baseUrl$_endpointPath');
print('Response received: $response');
List<Map<String, dynamic>> entities = const [];
if (response is List) {
entities = response
.whereType<Map>()
.map((e) => Map<String, dynamic>.from(e as Map))
.toList();
} else if (response is Map<String, dynamic>) {
final dynamic content = response['content'];
if (content is List) {
entities = content
.whereType<Map>()
.map((e) => Map<String, dynamic>.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<ApiResponse<List<Map<String, dynamic>>>> getAllWithPagination(
int page, int size) async {
try {
final response = await _helper.getGetApiResponse(
'$baseUrl$_endpointPath/getall/page?page=$page&size=$size');
if (response is Map<String, dynamic> && response['content'] is List) {
final List<Map<String, dynamic>> entities =
(response['content'] as List).cast<Map<String, dynamic>>().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<ApiResponse<Map<String, dynamic>>> createEntity(
Map<String, dynamic> entity) async {
try {
print("in post api$entity");
final response =
await _helper.getPostApiResponse('$baseUrl$_endpointPath', entity);
return ApiResponse.success(response as Map<String, dynamic>);
} catch (e) {
return ApiResponse.error('Failed to create entity: $e');
}
}
Future<ApiResponse<Map<String, dynamic>>> updateEntity(
int entityId, Map<String, dynamic> entity) async {
try {
final response = await _helper.getPutApiResponse(
'$baseUrl$_endpointPath/$entityId', entity);
return ApiResponse.success(response as Map<String, dynamic>);
} catch (e) {
return ApiResponse.error('Failed to update entity: $e');
}
}
Future<ApiResponse<void>> 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');
}
}
}

View File

@ -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<Map<String, dynamic>> _couponList = [];
List<Map<String, dynamic>> _filteredList = [];
bool _isLoading = false;
String _errorMessage = '';
int _currentPage = 0;
int _pageSize = 10;
bool _hasMoreData = true;
String _searchQuery = '';
// Getters
List<Map<String, dynamic>> get couponList => _couponList;
List<Map<String, dynamic>> 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<void> 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<void> 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<bool> createEntity(Map<String, dynamic> 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<bool> updateEntity(int id, Map<String, dynamic> 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<bool> 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<void> refreshData() async {
await getAllWithPagination(refresh: true);
}
}

View File

@ -87,6 +87,7 @@ class _Feature_entity_list_screenState extends State<Feature_entity_list_screen>
} }
void _showDeleteDialog(Map<String, dynamic> entity) { void _showDeleteDialog(Map<String, dynamic> entity) {
final parentContext = context;
showDialog( showDialog(
context: context, context: context,
builder: (BuildContext context) { builder: (BuildContext context) {
@ -105,7 +106,7 @@ class _Feature_entity_list_screenState extends State<Feature_entity_list_screen>
onPressed: () async { onPressed: () async {
Navigator.of(context).pop(); Navigator.of(context).pop();
final vm = final vm =
Provider.of<FeatureViewModelScreen>(context, listen: false); Provider.of<FeatureViewModelScreen>(parentContext, listen: false);
await vm.deleteEntity(entity['id']); await vm.deleteEntity(entity['id']);
}, },
), ),

View File

@ -35,7 +35,13 @@ import '../../../../BuilderField/shared/fields/data_grid_field.dart';
import '../../../../BuilderField/shared/fields/dropdown_field.dart'; import '../../../../BuilderField/shared/fields/dropdown_field.dart';
import '../../../../BuilderField/shared/fields/dynamic_dropdown_field.dart'; import '../../../../BuilderField/shared/fields/dynamic_dropdown_field.dart';
import '../../../../BuilderField/shared/fields/dynamic_multiselect_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 /// This defines the structure and validation for Feature forms
class FeatureFields { class FeatureFields {
/// Get field definitions for Feature entity /// Get field definitions for Feature entity

View File

@ -14,12 +14,29 @@ class FeatureRepoScreen {
try { try {
final response = final response =
await _helper.getGetApiResponse('$baseUrl$_endpointPath'); await _helper.getGetApiResponse('$baseUrl$_endpointPath');
return ApiResponse.success(response as List<Map<String, dynamic>>); print('Response received: $response');
List<Map<String, dynamic>> entities = const [];
if (response is List) {
entities = response
.whereType<Map>()
.map((e) => Map<String, dynamic>.from(e as Map))
.toList();
} else if (response is Map<String, dynamic>) {
final dynamic content = response['content'];
if (content is List) {
entities = content
.whereType<Map>()
.map((e) => Map<String, dynamic>.from(e as Map))
.toList();
}
}
return ApiResponse.success(entities);
} catch (e) { } catch (e) {
print(' error got $e');
return ApiResponse.error('Failed to get all entities: $e'); return ApiResponse.error('Failed to get all entities: $e');
} }
} }
Future<ApiResponse<List<Map<String, dynamic>>>> getAllWithPagination( Future<ApiResponse<List<Map<String, dynamic>>>> getAllWithPagination(
int page, int size) async { int page, int size) async {
try { try {

View File

@ -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<List<Map<String, dynamic>>> getEntities() async {
try {
final response = await _helper.getGetApiResponse('$baseUrl/Guestuser/Guestuser');
final entities = (response as List).cast<Map<String, dynamic>>();
return entities;
} catch (e) {
throw Exception('Failed to get all entities: $e');
}
}
Future<List<Map<String, dynamic>>> 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<Map<String, dynamic>>();
return entities;
} catch (e) {
throw Exception('Failed to get all without pagination: $e');
}
}
Future<Map<String, dynamic>> createEntity(
Map<String, dynamic> 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<String, dynamic>
Map<String, dynamic> responseData = response;
return responseData;
} catch (e) {
throw Exception('Failed to create entity: $e');
}
}
Future<void> updateEntity( int entityId, Map<String, dynamic> entity) async {
try {
await _helper.getPutApiResponse('$baseUrl/Guestuser/Guestuser/$entityId',
entity); print(entity);
} catch (e) {
throw Exception('Failed to update entity: $e');
}
}
Future<void> deleteEntity( int entityId) async {
try {
await _helper.getDeleteApiResponse('$baseUrl/Guestuser/Guestuser/$entityId');
} catch (e) {
throw Exception('Failed to delete entity: $e');
}
}
}

View File

@ -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<GuestuserCreateEntityScreen> {
final Map<String, dynamic> formData = {};
final _formKey = GlobalKey<FormState>();
@override
Widget build(BuildContext context) {
return Consumer<GuestuserViewModelScreen>(
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<void> _handleSubmit(Map<String, dynamic> formData) async {
final provider =
Provider.of<GuestuserViewModelScreen>(context, listen: false);
final success = await provider.createEntity(formData);
if (success && mounted) {
Navigator.pop(context);
}
}
}

View File

@ -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<String, dynamic> entity;
const GuestuserDetailsScreen({
super.key,
required this.entity,
});
@override
State<GuestuserDetailsScreen> createState() => _GuestuserDetailsScreenState();
}
class _GuestuserDetailsScreenState extends State<GuestuserDetailsScreen> {
void _navigateToUpdateScreen(Map<String, dynamic> 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<String, dynamic> 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<GuestuserViewModelScreen>(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<GuestuserViewModelScreen>(
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,
);
},
);
}
}

View File

@ -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<Guestuser_entity_list_screen> {
@override
void initState() {
super.initState();
_loadData();
}
void _loadData() {
WidgetsBinding.instance.addPostFrameCallback((_) {
if (mounted) {
final vm = Provider.of<GuestuserViewModelScreen>(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<GuestuserViewModelScreen>(context, listen: false);
vm.refreshData();
});
}
void _navigateToUpdateScreen(Map<String, dynamic> entity) {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => ChangeNotifierProvider(
create: (context) => GuestuserViewModelScreen(),
child: GuestuserUpdateEntityScreen(entity: entity),
),
),
).then((_) {
final vm = Provider.of<GuestuserViewModelScreen>(context, listen: false);
vm.refreshData();
});
}
void _navigateToDetailsScreen(Map<String, dynamic> entity) {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => ChangeNotifierProvider(
create: (context) => GuestuserViewModelScreen(),
child: GuestuserDetailsScreen(entity: entity),
),
),
);
}
void _showDeleteDialog(Map<String, dynamic> 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<GuestuserViewModelScreen>(parentContext, listen: false);
await vm.deleteEntity(entity['id']);
},
),
],
);
},
);
}
@override
Widget build(BuildContext context) {
return Consumer<GuestuserViewModelScreen>(
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'},
],
);
},
);
}
}

View File

@ -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<BaseField> getFields(BuildContext context) {
final viewModel =
Provider.of<GuestuserViewModelScreen>(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,
),
];
}
}

View File

@ -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<String, dynamic> entity;
GuestuserUpdateEntityScreen({required this.entity});
@override
_GuestuserUpdateEntityScreenState createState() => _GuestuserUpdateEntityScreenState();
}
class _GuestuserUpdateEntityScreenState extends State<GuestuserUpdateEntityScreen> {
final _formKey = GlobalKey<FormState>();
@override
Widget build(BuildContext context) {
return Consumer<GuestuserViewModelScreen>(
builder: (context, viewModel, child) {
// Start with all fields, then remove upload fields (generic filter by keys)
final Set<String> 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<void> _handleSubmit(Map<String, dynamic> formData) async {
final provider =
Provider.of<GuestuserViewModelScreen>(context, listen: false);
final success = await provider.updateEntity(widget.entity['id'], formData);
if (success && mounted) {
Navigator.pop(context);
}
}
}

View File

@ -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<ApiResponse<List<Map<String, dynamic>>>> getEntities() async {
try {
final response =
await _helper.getGetApiResponse('$baseUrl$_endpointPath');
print('Response received: $response');
List<Map<String, dynamic>> entities = const [];
if (response is List) {
entities = response
.whereType<Map>()
.map((e) => Map<String, dynamic>.from(e as Map))
.toList();
} else if (response is Map<String, dynamic>) {
final dynamic content = response['content'];
if (content is List) {
entities = content
.whereType<Map>()
.map((e) => Map<String, dynamic>.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<ApiResponse<List<Map<String, dynamic>>>> getAllWithPagination(
int page, int size) async {
try {
final response = await _helper.getGetApiResponse(
'$baseUrl$_endpointPath/getall/page?page=$page&size=$size');
if (response is Map<String, dynamic> && response['content'] is List) {
final List<Map<String, dynamic>> entities =
(response['content'] as List).cast<Map<String, dynamic>>().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<ApiResponse<Map<String, dynamic>>> createEntity(
Map<String, dynamic> entity) async {
try {
print("in post api$entity");
final response =
await _helper.getPostApiResponse('$baseUrl$_endpointPath', entity);
return ApiResponse.success(response as Map<String, dynamic>);
} catch (e) {
return ApiResponse.error('Failed to create entity: $e');
}
}
Future<ApiResponse<Map<String, dynamic>>> updateEntity(
int entityId, Map<String, dynamic> entity) async {
try {
final response = await _helper.getPutApiResponse(
'$baseUrl$_endpointPath/$entityId', entity);
return ApiResponse.success(response as Map<String, dynamic>);
} catch (e) {
return ApiResponse.error('Failed to update entity: $e');
}
}
Future<ApiResponse<void>> 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');
}
}
}

View File

@ -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<Map<String, dynamic>> _guestuserList = [];
List<Map<String, dynamic>> _filteredList = [];
bool _isLoading = false;
String _errorMessage = '';
int _currentPage = 0;
int _pageSize = 10;
bool _hasMoreData = true;
String _searchQuery = '';
// Getters
List<Map<String, dynamic>> get guestuserList => _guestuserList;
List<Map<String, dynamic>> 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<void> 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<void> 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<bool> createEntity(Map<String, dynamic> 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<bool> updateEntity(int id, Map<String, dynamic> 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<bool> 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<void> refreshData() async {
await getAllWithPagination(refresh: true);
}
}

View File

@ -1,5 +1,12 @@
import '../../Entity/taxi_rental/Products/ProductsView/Products_entity_list_screen.dart'; import '../../Entity/taxi_rental/Guestuser/GuestuserView/Guestuser_entity_list_screen.dart';
import '../../Entity/taxi_rental/Products/Products_viewModel/Products_view_model_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/RidesView/Rides_entity_list_screen.dart';
import '../../Entity/taxi_rental/Rides/Rides_viewModel/Rides_view_model_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 // NEW MENU
DrawerItem( DrawerItem(
icon: Icons.data_object, icon: Icons.data_object,
title: 'Products Management', title: 'Guestuser Management',
subtitle: 'Manage Products entities', subtitle: 'Manage Guestuser entities',
onTap: (context) { onTap: (context) {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) => ChangeNotifierProvider( builder: (context) => ChangeNotifierProvider(
create: (context) => ProductsViewModelScreen(), create: (context) => GuestuserViewModelScreen(),
child: Products_entity_list_screen(), 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( DrawerItem(
icon: Icons.data_object, icon: Icons.data_object,
title: 'Rides Management', title: 'Rides Management',