Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.iemr.common.controller.dynamicForm;

import com.iemr.common.data.dynamic_from.FormEntity;
import com.iemr.common.data.dynamic_from.ModuleEntity;
import com.iemr.common.dto.dynamicForm.FormTypeEntityDTO;
import com.iemr.common.dto.dynamicForm.ModuleEntityDTO;
import com.iemr.common.service.dynamicForm.FormTypeService;
import com.iemr.common.service.dynamicForm.ModuleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

@RequestMapping(value = "masterFrom")
@RestController
public class DynamicFormController {
@Autowired ModuleService moduleService;
@Autowired
private FormTypeService formTypeService;

@PostMapping("/modules")
public ResponseEntity<ModuleEntity> createModule(@RequestBody ModuleEntityDTO module) {
return ResponseEntity.ok(moduleService.save(module));
}

@PostMapping("/modules/{moduleId}/form-types")
public ResponseEntity<FormEntity> createFormType(@PathVariable Long moduleId, @RequestBody FormTypeEntityDTO formType) {
return ResponseEntity.ok(formTypeService.createFormType(moduleId, formType));
}


}
27 changes: 27 additions & 0 deletions src/main/java/com/iemr/common/data/dynamic_from/FormEntity.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.iemr.common.data.dynamic_from;

import com.fasterxml.jackson.annotation.JsonInclude;
import jakarta.persistence.*;
import lombok.Data;

@Data
@Entity
@Table(name = "form_types",schema = "db_imer")
public class FormEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "Id")
private Long id;

@Column(name = "form_name",columnDefinition = "TEXT")
private String formName;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "module_id")
private ModuleEntity module;

@Column(name = "fields",columnDefinition = "TEXT")
private String fields ;


}
23 changes: 23 additions & 0 deletions src/main/java/com/iemr/common/data/dynamic_from/ModuleEntity.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.iemr.common.data.dynamic_from;

import com.fasterxml.jackson.annotation.JsonInclude;
import jakarta.persistence.*;
import lombok.Data;

import java.util.List;
@Data
@Entity
@Table(name = "m_modules",schema = "db_iemr")
public class ModuleEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "Id")
private Long id;

@Column(name = "module_name",columnDefinition = "TEXT")
private String moduleName;

@OneToMany(mappedBy = "module", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private List<FormEntity> formTypes;

}
23 changes: 23 additions & 0 deletions src/main/java/com/iemr/common/dto/dynamicForm/FormFieldDTO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.iemr.common.dto.dynamicForm;

import lombok.Data;

import java.util.List;
import java.util.Map;

@Data
public class FormFieldDTO {
private String name;
private String label;
private String type;
private boolean required;
private String inputType;
private String fileType;
private String buttonAction;
private String visibleIfField;
private String visibleIfValue;
private Map<String, Object> validations;
private List<Map<String, String>> options;

// Getters and Setters
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.iemr.common.dto.dynamicForm;

import lombok.Data;

import java.util.List;

@Data
public class FormTypeEntityDTO {

private Long id;

private String formName;

private ModuleEntityDTO module;

private List<FormFieldDTO> fields;

}
12 changes: 12 additions & 0 deletions src/main/java/com/iemr/common/dto/dynamicForm/ModuleEntityDTO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.iemr.common.dto.dynamicForm;

import lombok.Data;

import java.util.ArrayList;
import java.util.List;
@Data
public class ModuleEntityDTO {
private Long id;
private String moduleName;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.iemr.common.repository.dynamic_form;

import com.iemr.common.data.dynamic_from.FormEntity;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface FormTypeRepository extends CrudRepository<FormEntity, Long> {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.iemr.common.repository.dynamic_form;

import com.iemr.common.data.dynamic_from.ModuleEntity;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface ModuleRepository extends CrudRepository<ModuleEntity, Long> {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.iemr.common.service.dynamicForm;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.iemr.common.data.dynamic_from.FormEntity;
import com.iemr.common.data.dynamic_from.ModuleEntity;
import com.iemr.common.dto.dynamicForm.FormTypeEntityDTO;
import com.iemr.common.repository.dynamic_form.FormTypeRepository;
import com.iemr.common.repository.dynamic_form.ModuleRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class FormTypeService {
@Autowired
ModuleRepository moduleRepo;
@Autowired
FormTypeRepository formTypeRepo;
@Autowired
ObjectMapper objectMapper;

public FormEntity createFormType(Long moduleId, FormTypeEntityDTO formTypeDTO) {
ModuleEntity module = moduleRepo.findById(moduleId).orElseThrow();
FormEntity formType = new FormEntity();
formType.setFormName(formTypeDTO.getFormName());
formType.setModule(module);
try {
String fieldsJson = objectMapper.writeValueAsString(formTypeDTO.getFields());
formType.setFields(fieldsJson);
} catch (JsonProcessingException e) {
throw new RuntimeException("Failed to serialize form fields", e);
}
return formTypeRepo.save(formType);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.iemr.common.service.dynamicForm;

import com.iemr.common.data.dynamic_from.ModuleEntity;
import com.iemr.common.dto.dynamicForm.ModuleEntityDTO;
import com.iemr.common.repository.dynamic_form.ModuleRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Optional;

@Service
public class ModuleService {
@Autowired
ModuleRepository repo;

public ModuleEntity save(ModuleEntityDTO module) {
ModuleEntity moduleEntity = new ModuleEntity();
moduleEntity.setModuleName(module.getModuleName());
return repo.save(moduleEntity);
}

public Optional<ModuleEntity> findById(Long id) {
return repo.findById(id);
}
}