Index: grails-app/services/com/lemans/ds/studioorder/StudioOrderPartManagerService.groovy =================================================================== diff -u -ree07c3ace92fe46a8c1c570b9e4505071796533d -r14b18d52e3a36938dbab85edd7f01c1fe3f29a26 --- grails-app/services/com/lemans/ds/studioorder/StudioOrderPartManagerService.groovy (.../StudioOrderPartManagerService.groovy) (revision ee07c3ace92fe46a8c1c570b9e4505071796533d) +++ grails-app/services/com/lemans/ds/studioorder/StudioOrderPartManagerService.groovy (.../StudioOrderPartManagerService.groovy) (revision 14b18d52e3a36938dbab85edd7f01c1fe3f29a26) @@ -76,43 +76,42 @@ stmt.addBatch([studioOrderId: values.studioOrderId, partNumber: partNumber, now: now, username: username]) } } - Map result = [:] - List success = [] List failures = [] - existingStudioOrderParts.each {studioOrderPart-> - if(failures.find{it.partNumber == studioOrderPart.partNumber}) { - return; - } - Map error = [ - partNumber: studioOrderPart.partNumber, - status: "failed" - ] - if(studioOrderPart.studioOrderId == values.studioOrderId) { - error.message = "Part is already in the current order" - } else if(studioOrderPart.statusId == 14200) { - error.message = "Part is in existing open orders" - } else if(studioOrderPart.statusId == 14201) { - error.message = "Part is in existing submitted orders" - } - failures.push(error) - } + Set existingCurrentOrder = existingStudioOrderParts.findAll{it.studioOrderId == values.studioOrderId}*.partNumber + Set existingOpenOrder = existingStudioOrderParts.findAll{it.statusId == 14200}*.partNumber + Set existingSubmittedOrder = existingStudioOrderParts.findAll{it.statusId == 14201}*.partNumber + Set dbErrors = [] + newPartNumbers.eachWithIndex{String partNumber, Integer index-> if(updateCounts[index] != 1) { - failures.push([ - partNumber: partNumber, - status: "failed", - message: "Error in inserting" - ]) - } else { - success.push([ - partNumber: partNumber, - status: "success" - ]) + dbErrors.add(partNumber) } } - result.failures = failures - result.success = success - [results: result] + if(existingCurrentOrder) { + failures.push([ + type: "error", + text: "The following Part(s) failed as they are in already in current order: ${existingCurrentOrder.join(",")}" + ]) + } + if(existingOpenOrder) { + failures.push([ + type: "error", + text: "The following Part(s) failed as they are in existing open orders: ${existingOpenOrder.join(",")}" + ]) + } + if(existingSubmittedOrder) { + failures.push([ + type: "error", + text: "The following Part(s) failed as they are in existing submitted orders: ${existingSubmittedOrder.join(",")}" + ]) + } + if(dbErrors) { + failures.push([ + type: "error", + text: "The following Part(s) failed while saving: ${dbErrors.join(",")}" + ]) + } + [messages: failures] } Map updateParts(Map values, String username) {