/* Options: Date: 2026-08-13 03:59:35 Version: 10.09 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://blazor-gallery.servicestack.net //GlobalNamespace: //MakePropertiesOptional: False //AddServiceStackTypes: True //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True IncludeTypes: CreateInterview.* //ExcludeTypes: //DefaultImports: */ package dtos import ( ss "github.com/ServiceStack/servicestack-go" "time" ) type JobApplicationAttachment struct { Id int `json:"id,omitempty"` // @References("typeof(MyApp.ServiceModel.JobApplication)") JobApplicationId int `json:"jobApplicationId,omitempty"` FileName string `json:"fileName"` FilePath string `json:"filePath"` ContentType string `json:"contentType"` ContentLength int64 `json:"contentLength,omitempty"` } type AppUser struct { Id string `json:"id"` FirstName *string `json:"firstName,omitempty"` LastName *string `json:"lastName,omitempty"` DisplayName *string `json:"displayName,omitempty"` ProfileUrl *string `json:"profileUrl,omitempty"` } type EmploymentType string const ( EmploymentTypeFullTime EmploymentType = "FullTime" EmploymentTypePartTime = "PartTime" EmploymentTypeCasual = "Casual" EmploymentTypeContract = "Contract" ) type Job struct { ss.AuditBase Id int `json:"id,omitempty"` Title string `json:"title"` EmploymentType EmploymentType `json:"employmentType,omitempty"` Company string `json:"company"` Location string `json:"location"` SalaryRangeLower int `json:"salaryRangeLower,omitempty"` SalaryRangeUpper int `json:"salaryRangeUpper,omitempty"` Description string `json:"description"` Applications []JobApplication `json:"applications"` Closing time.Time `json:"closing,omitempty"` } type Contact struct { Id int `json:"id,omitempty"` // @Computed() DisplayName string `json:"displayName"` ProfileUrl string `json:"profileUrl"` FirstName string `json:"firstName"` LastName string `json:"lastName"` SalaryExpectation *int `json:"salaryExpectation,omitempty"` JobType string `json:"jobType"` AvailabilityWeeks int `json:"availabilityWeeks,omitempty"` PreferredWorkType EmploymentType `json:"preferredWorkType,omitempty"` PreferredLocation string `json:"preferredLocation"` Email string `json:"email"` Phone string `json:"phone"` Skills []string `json:"skills,omitempty"` About string `json:"about"` Applications []JobApplication `json:"applications"` } type JobApplicationComment struct { ss.AuditBase Id int `json:"id,omitempty"` // @References("typeof(MyApp.ServiceModel.AppUser)") AppUserId string `json:"appUserId"` AppUser AppUser `json:"appUser"` // @References("typeof(MyApp.ServiceModel.JobApplication)") JobApplicationId int `json:"jobApplicationId,omitempty"` Comment string `json:"comment"` } type JobApplicationStatus string const ( JobApplicationStatusApplied JobApplicationStatus = "Applied" JobApplicationStatusPhoneScreening = "PhoneScreening" JobApplicationStatusPhoneScreeningCompleted = "PhoneScreeningCompleted" JobApplicationStatusInterview = "Interview" JobApplicationStatusInterviewCompleted = "InterviewCompleted" JobApplicationStatusOffer = "Offer" JobApplicationStatusDisqualified = "Disqualified" ) type JobApplicationEvent struct { ss.AuditBase Id int `json:"id,omitempty"` // @References("typeof(MyApp.ServiceModel.JobApplication)") JobApplicationId int `json:"jobApplicationId,omitempty"` // @References("typeof(MyApp.ServiceModel.AppUser)") AppUserId string `json:"appUserId"` AppUser AppUser `json:"appUser"` Description string `json:"description"` Status *JobApplicationStatus `json:"status,omitempty"` EventDate time.Time `json:"eventDate,omitempty"` } type PhoneScreen struct { ss.AuditBase Id int `json:"id,omitempty"` // @References("typeof(MyApp.ServiceModel.AppUser)") AppUserId string `json:"appUserId"` AppUser AppUser `json:"appUser"` // @References("typeof(MyApp.ServiceModel.JobApplication)") JobApplicationId int `json:"jobApplicationId,omitempty"` ApplicationStatus *JobApplicationStatus `json:"applicationStatus,omitempty"` Notes string `json:"notes"` } type Interview struct { ss.AuditBase Id int `json:"id,omitempty"` BookingTime time.Time `json:"bookingTime,omitempty"` // @References("typeof(MyApp.ServiceModel.JobApplication)") JobApplicationId int `json:"jobApplicationId,omitempty"` // @References("typeof(MyApp.ServiceModel.AppUser)") AppUserId string `json:"appUserId"` AppUser AppUser `json:"appUser"` ApplicationStatus *JobApplicationStatus `json:"applicationStatus,omitempty"` Notes string `json:"notes"` } type JobOffer struct { ss.AuditBase Id int `json:"id,omitempty"` SalaryOffer int `json:"salaryOffer,omitempty"` Currency string `json:"currency"` // @References("typeof(MyApp.ServiceModel.JobApplication)") JobApplicationId int `json:"jobApplicationId,omitempty"` // @References("typeof(MyApp.ServiceModel.AppUser)") AppUserId string `json:"appUserId"` AppUser AppUser `json:"appUser"` Notes string `json:"notes"` } type JobApplication struct { Id int `json:"id,omitempty"` // @References("typeof(MyApp.ServiceModel.Job)") JobId int `json:"jobId,omitempty"` // @References("typeof(MyApp.ServiceModel.Contact)") ContactId int `json:"contactId,omitempty"` Position Job `json:"position"` Applicant Contact `json:"applicant"` Comments []JobApplicationComment `json:"comments"` AppliedDate time.Time `json:"appliedDate,omitempty"` ApplicationStatus JobApplicationStatus `json:"applicationStatus,omitempty"` Attachments []JobApplicationAttachment `json:"attachments"` Events []JobApplicationEvent `json:"events"` PhoneScreen PhoneScreen `json:"phoneScreen"` Interview Interview `json:"interview"` JobOffer JobOffer `json:"jobOffer"` } // @ValidateRequest(Validator="IsAuthenticated") type CreateInterview struct { // @Validate(Validator="NotNull") BookingTime *time.Time `json:"bookingTime"` // @Validate(Validator="GreaterThan(0)") JobApplicationId int `json:"jobApplicationId,omitempty"` // @Validate(Validator="GreaterThan(0)", Message="An employee to perform interview must be selected.") AppUserId string `json:"appUserId"` ApplicationStatus JobApplicationStatus `json:"applicationStatus,omitempty"` } func (CreateInterview) CreateResponse() (r Interview) { return } func (CreateInterview) HttpMethod() string { return "POST" }