in lib/holiday-stops/src/main/scala/com/gu/salesforce/holiday_stops/SalesforceHolidayStopRequest.scala [43:97]
override def reads(jsValue: JsValue): JsResult[ZonedDateTime] =
jsValue.validate[String].map(sfDate => ZonedDateTime.parse(sfDate, SALESFORCE_DATE_TIME_FORMATTER))
override def writes(dateTime: ZonedDateTime): JsValue = JsString(dateTime.format(SALESFORCE_DATE_TIME_FORMATTER))
}
case class HolidayStopRequestStartDate(value: LocalDate) extends AnyVal
implicit val formatHolidayStopRequestStartDate = Json.valueFormat[HolidayStopRequestStartDate]
case class HolidayStopRequestEndDate(value: LocalDate) extends AnyVal
implicit val formatHolidayStopRequestEndDate = Json.valueFormat[HolidayStopRequestEndDate]
case class HolidayStopRequestActionedCount(value: Int) extends AnyVal
implicit val formatHolidayStopRequestActionedCount = Json.valueFormat[HolidayStopRequestActionedCount]
case class HolidayStopRequestWithdrawnTime(value: ZonedDateTime) extends AnyVal
implicit val formatHolidayStopRequestWithdrawnTime = Json.valueFormat[HolidayStopRequestWithdrawnTime]
case class HolidayStopRequestIsWithdrawn(value: Boolean) extends AnyVal
implicit val formatHolidayStopRequestIsWithdrawn = Json.valueFormat[HolidayStopRequestIsWithdrawn]
case class BulkSuspensionReason(value: String) extends AnyVal
implicit val formatBulkSuspensionReason = Json.valueFormat[BulkSuspensionReason]
def getHolidayStopRequestPrefixSOQL(productNamePrefixOption: Option[ProductName] = None) = s"""
| SELECT Id, Start_Date__c, End_Date__c, Subscription_Name__c, Product_Name__c,
| Actioned_Count__c, Pending_Count__c, Total_Issues_Publications_Impacted_Count__c,
| Withdrawn_Time__c, Is_Withdrawn__c, Bulk_Suspension_Reason__c, (
| ${SalesforceHolidayStopRequestsDetail.SOQL_SELECT_CLAUSE}
| FROM Holiday_Stop_Request_Detail__r
| ${SalesforceHolidayStopRequestsDetail.SOQL_ORDER_BY_CLAUSE}
| )
| FROM $holidayStopRequestSfObjectRef
| ${productNamePrefixOption.map(pn => s"WHERE Product_Name__c LIKE '${pn.value}%'").getOrElse("")}
|""".stripMargin
case class HolidayStopRequest(
Id: HolidayStopRequestId,
Start_Date__c: HolidayStopRequestStartDate,
End_Date__c: HolidayStopRequestEndDate,
Actioned_Count__c: HolidayStopRequestActionedCount,
Pending_Count__c: Int,
Total_Issues_Publications_Impacted_Count__c: Int,
Subscription_Name__c: SubscriptionName,
Product_Name__c: ProductName,
Holiday_Stop_Request_Detail__r: Option[RecordsWrapperCaseClass[HolidayStopRequestsDetail]],
Withdrawn_Time__c: Option[HolidayStopRequestWithdrawnTime],
Is_Withdrawn__c: HolidayStopRequestIsWithdrawn,
Bulk_Suspension_Reason__c: Option[BulkSuspensionReason],
)
implicit val format = Json.format[HolidayStopRequest]
implicit val formatIds = Json.format[RecordsWrapperCaseClass[HolidayStopRequest]]
class LookupByContactAndOptionalSubscriptionName(sfGet: HttpOp[RestRequestMaker.GetRequestWithParams, JsValue]) {