layout-configurations.ts 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. "use server";
  2. import { prisma } from "@/lib/prisma";
  3. // Layout Configuration Actions
  4. export async function getLayoutConfigurations() {
  5. try {
  6. const configurations = await prisma.layoutConfiguration.findMany({
  7. include: {
  8. sections: {
  9. include: {
  10. fields: true,
  11. },
  12. },
  13. },
  14. orderBy: {
  15. createdAt: "desc",
  16. },
  17. });
  18. return { success: true, data: configurations };
  19. } catch (error) {
  20. console.error("Error fetching layout configurations:", error);
  21. return { success: false, error: "Failed to fetch layout configurations" };
  22. }
  23. }
  24. export async function getLayoutConfiguration(id: number) {
  25. try {
  26. const configuration = await prisma.layoutConfiguration.findUnique({
  27. where: { id },
  28. include: {
  29. sections: {
  30. include: {
  31. fields: true,
  32. },
  33. orderBy: {
  34. createdAt: "asc",
  35. },
  36. },
  37. },
  38. });
  39. if (!configuration) {
  40. return { success: false, error: "Layout configuration not found" };
  41. }
  42. return { success: true, data: configuration };
  43. } catch (error) {
  44. console.error("Error fetching layout configuration:", error);
  45. return { success: false, error: "Failed to fetch layout configuration" };
  46. }
  47. }
  48. export async function getLayoutSections(configurationId: number) {
  49. try {
  50. const sections = await prisma.layoutSection.findMany({
  51. where: { configurationId },
  52. include: {
  53. fields: {
  54. orderBy: {
  55. importColumnOrderNumber: "asc",
  56. },
  57. },
  58. },
  59. orderBy: {
  60. createdAt: "asc",
  61. },
  62. });
  63. return { success: true, data: sections };
  64. } catch (error) {
  65. console.error("Error fetching layout sections:", error);
  66. return { success: false, error: "Failed to fetch layout sections" };
  67. }
  68. }
  69. export async function getLayoutSectionFields(sectionId: number) {
  70. try {
  71. const fields = await prisma.layoutSectionField.findMany({
  72. where: { layoutSectionId: sectionId },
  73. orderBy: {
  74. importColumnOrderNumber: "asc",
  75. },
  76. });
  77. return { success: true, data: fields };
  78. } catch (error) {
  79. console.error("Error fetching layout section fields:", error);
  80. return { success: false, error: "Failed to fetch layout section fields" };
  81. }
  82. }
  83. // Create new layout configuration
  84. export async function createLayoutConfiguration(name: string) {
  85. try {
  86. const configuration = await prisma.layoutConfiguration.create({
  87. data: {
  88. name,
  89. },
  90. });
  91. return { success: true, data: configuration };
  92. } catch (error) {
  93. console.error("Error creating layout configuration:", error);
  94. return { success: false, error: "Failed to create layout configuration" };
  95. }
  96. }
  97. // Update layout configuration
  98. export async function updateLayoutConfiguration(id: number, name: string) {
  99. try {
  100. const configuration = await prisma.layoutConfiguration.update({
  101. where: { id },
  102. data: {
  103. name,
  104. },
  105. });
  106. return { success: true, data: configuration };
  107. } catch (error) {
  108. console.error("Error updating layout configuration:", error);
  109. return { success: false, error: "Failed to update layout configuration" };
  110. }
  111. }
  112. // Delete layout configuration
  113. export async function deleteLayoutConfiguration(id: number) {
  114. try {
  115. await prisma.layoutConfiguration.delete({
  116. where: { id },
  117. });
  118. return { success: true };
  119. } catch (error) {
  120. console.error("Error deleting layout configuration:", error);
  121. return { success: false, error: "Failed to delete layout configuration" };
  122. }
  123. }
  124. // Create new layout section
  125. export async function createLayoutSection(
  126. configurationId: number,
  127. sectionData: {
  128. name: string;
  129. type: string;
  130. sheetName: string;
  131. tableName: string;
  132. startingRow?: number;
  133. endingRow?: number;
  134. }
  135. ) {
  136. try {
  137. const section = await prisma.layoutSection.create({
  138. data: {
  139. configurationId,
  140. name: sectionData.name,
  141. type: sectionData.type,
  142. sheetName: sectionData.sheetName,
  143. tableName: sectionData.tableName,
  144. startingRow: sectionData.startingRow,
  145. endingRow: sectionData.endingRow,
  146. },
  147. });
  148. return { success: true, data: section };
  149. } catch (error) {
  150. console.error("Error creating layout section:", error);
  151. return { success: false, error: "Failed to create layout section" };
  152. }
  153. }