Cochrane+ App API

<back to all web services

AttendanceSessionStatusChangeRequest

Requires Authentication
The following routes are available for this service:
POST/attendance/sessionstatus
import 'package:servicestack/servicestack.dart';

class ApiServiceRequest implements IServiceRequest, IHasApiKey, IHasDeviceInfo, IConvertible
{
    /**
    * The API Key required for authentication
    */
    // @ApiMember(DataType="string", Description="The API Key required for authentication", IsRequired=true)
    String? apiKey;

    /**
    * Latitude of the user making this request
    */
    // @ApiMember(DataType="double", Description="Latitude of the user making this request")
    double? latitude;

    /**
    * Longitude of the user making this request
    */
    // @ApiMember(DataType="double", Description="Longitude of the user making this request")
    double? longitude;

    ApiServiceRequest({this.apiKey,this.latitude,this.longitude});
    ApiServiceRequest.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        apiKey = json['apiKey'];
        latitude = JsonConverters.toDouble(json['latitude']);
        longitude = JsonConverters.toDouble(json['longitude']);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'apiKey': apiKey,
        'latitude': latitude,
        'longitude': longitude
    };

    getTypeName() => "ApiServiceRequest";
    TypeContext? context = _ctx;
}

class ApiServiceResponse implements IServiceResponse, IConvertible
{
    String? description;
    String? heading;
    bool? wasSuccessful;
    dynamic? modelState;

    ApiServiceResponse({this.description,this.heading,this.wasSuccessful,this.modelState});
    ApiServiceResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        description = json['description'];
        heading = json['heading'];
        wasSuccessful = json['wasSuccessful'];
        modelState = JsonConverters.fromJson(json['modelState'],'dynamic',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'description': description,
        'heading': heading,
        'wasSuccessful': wasSuccessful,
        'modelState': JsonConverters.toJson(modelState,'dynamic',context!)
    };

    getTypeName() => "ApiServiceResponse";
    TypeContext? context = _ctx;
}

class AttendanceEventType
{
    static const AttendanceEventType ClockOut = const AttendanceEventType._(0);
    static const AttendanceEventType ClockIn = const AttendanceEventType._(1);
    static const AttendanceEventType StartLunch = const AttendanceEventType._(2);
    static const AttendanceEventType EndLunch = const AttendanceEventType._(3);
    static const AttendanceEventType StartBreak = const AttendanceEventType._(4);
    static const AttendanceEventType EndBreak = const AttendanceEventType._(5);

    final int _value;
    const AttendanceEventType._(this._value);
    int get value => _value;
    static List<AttendanceEventType> get values => const [ClockOut,ClockIn,StartLunch,EndLunch,StartBreak,EndBreak];
}

class AttendanceEventData implements IConvertible
{
    AttendanceEventType? type;
    String? time;
    String? location;

    AttendanceEventData({this.type,this.time,this.location});
    AttendanceEventData.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        type = JsonConverters.fromJson(json['type'],'AttendanceEventType',context!);
        time = json['time'];
        location = json['location'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'type': JsonConverters.toJson(type,'AttendanceEventType',context!),
        'time': time,
        'location': location
    };

    getTypeName() => "AttendanceEventData";
    TypeContext? context = _ctx;
}

class AttendanceSessionInfo implements IConvertible
{
    int? attendanceSessionId;
    double? attendanceGoalTime;
    String? attendanceGoalTimeValue;
    List<AttendanceEventData>? attendanceEvents;
    String? startDate;
    String? endDate;
    bool? isClockedIn;
    double? timeElapsed;
    AttendanceEventType? latestEventType;
    double? totalBreakTime;
    double? totalLunchTime;
    bool? isNew;

    AttendanceSessionInfo({this.attendanceSessionId,this.attendanceGoalTime,this.attendanceGoalTimeValue,this.attendanceEvents,this.startDate,this.endDate,this.isClockedIn,this.timeElapsed,this.latestEventType,this.totalBreakTime,this.totalLunchTime,this.isNew});
    AttendanceSessionInfo.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        attendanceSessionId = json['attendanceSessionId'];
        attendanceGoalTime = JsonConverters.toDouble(json['attendanceGoalTime']);
        attendanceGoalTimeValue = json['attendanceGoalTimeValue'];
        attendanceEvents = JsonConverters.fromJson(json['attendanceEvents'],'List<AttendanceEventData>',context!);
        startDate = json['startDate'];
        endDate = json['endDate'];
        isClockedIn = json['isClockedIn'];
        timeElapsed = JsonConverters.toDouble(json['timeElapsed']);
        latestEventType = JsonConverters.fromJson(json['latestEventType'],'AttendanceEventType',context!);
        totalBreakTime = JsonConverters.toDouble(json['totalBreakTime']);
        totalLunchTime = JsonConverters.toDouble(json['totalLunchTime']);
        isNew = json['isNew'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'attendanceSessionId': attendanceSessionId,
        'attendanceGoalTime': attendanceGoalTime,
        'attendanceGoalTimeValue': attendanceGoalTimeValue,
        'attendanceEvents': JsonConverters.toJson(attendanceEvents,'List<AttendanceEventData>',context!),
        'startDate': startDate,
        'endDate': endDate,
        'isClockedIn': isClockedIn,
        'timeElapsed': timeElapsed,
        'latestEventType': JsonConverters.toJson(latestEventType,'AttendanceEventType',context!),
        'totalBreakTime': totalBreakTime,
        'totalLunchTime': totalLunchTime,
        'isNew': isNew
    };

    getTypeName() => "AttendanceSessionInfo";
    TypeContext? context = _ctx;
}

class GetAttendanceSessionInfoResponse extends ApiServiceResponse implements IConvertible
{
    AttendanceSessionInfo? sessionInfo;

    GetAttendanceSessionInfoResponse({this.sessionInfo});
    GetAttendanceSessionInfoResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        sessionInfo = JsonConverters.fromJson(json['sessionInfo'],'AttendanceSessionInfo',context!);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'sessionInfo': JsonConverters.toJson(sessionInfo,'AttendanceSessionInfo',context!)
    });

    getTypeName() => "GetAttendanceSessionInfoResponse";
    TypeContext? context = _ctx;
}

class AttendanceSessionStatusChangeRequest extends ApiServiceRequest implements IConvertible
{
    int? attendanceSessionId;
    AttendanceEventType? eventType;
    String? timeZoneName;

    AttendanceSessionStatusChangeRequest({this.attendanceSessionId,this.eventType,this.timeZoneName});
    AttendanceSessionStatusChangeRequest.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        attendanceSessionId = json['attendanceSessionId'];
        eventType = JsonConverters.fromJson(json['eventType'],'AttendanceEventType',context!);
        timeZoneName = json['timeZoneName'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'attendanceSessionId': attendanceSessionId,
        'eventType': JsonConverters.toJson(eventType,'AttendanceEventType',context!),
        'timeZoneName': timeZoneName
    });

    getTypeName() => "AttendanceSessionStatusChangeRequest";
    TypeContext? context = _ctx;
}

TypeContext _ctx = TypeContext(library: 'cochraneplus_api_dev.happen.zone', types: <String, TypeInfo> {
    'ApiServiceRequest': TypeInfo(TypeOf.Class, create:() => ApiServiceRequest()),
    'ApiServiceResponse': TypeInfo(TypeOf.Class, create:() => ApiServiceResponse()),
    'AttendanceEventType': TypeInfo(TypeOf.Enum, enumValues:AttendanceEventType.values),
    'AttendanceEventData': TypeInfo(TypeOf.Class, create:() => AttendanceEventData()),
    'AttendanceSessionInfo': TypeInfo(TypeOf.Class, create:() => AttendanceSessionInfo()),
    'List<AttendanceEventData>': TypeInfo(TypeOf.Class, create:() => <AttendanceEventData>[]),
    'GetAttendanceSessionInfoResponse': TypeInfo(TypeOf.Class, create:() => GetAttendanceSessionInfoResponse()),
    'AttendanceSessionStatusChangeRequest': TypeInfo(TypeOf.Class, create:() => AttendanceSessionStatusChangeRequest()),
});

Dart AttendanceSessionStatusChangeRequest DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv

HTTP + JSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /attendance/sessionstatus HTTP/1.1 
Host: cochraneplus-api-dev.happen.zone 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	attendanceSessionId: 0,
	eventType: 0,
	timeZoneName: String,
	apiKey: String,
	latitude: 0,
	longitude: 0
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	sessionInfo: 
	{
		attendanceSessionId: 0,
		attendanceGoalTime: 0,
		attendanceGoalTimeValue: "00:00:00",
		attendanceEvents: 
		[
			{
				
			}
		],
		startDate: String,
		endDate: String,
		isClockedIn: False,
		timeElapsed: 0,
		latestEventType: 0,
		totalBreakTime: 0,
		totalLunchTime: 0,
		isNew: False
	},
	description: String,
	heading: String,
	wasSuccessful: False,
	modelState: {}
}