【问题标题】:Adding Timeoff via User in a collection not working通过集合中的用户添加 Timeoff 不起作用
【发布时间】:2016-06-09 15:46:01
【问题描述】:

我发现一些旧的 Stackverflow 线程与这个问题完全相同,但我无法让解决方案正常工作。

基本上,我想添加暂停时间,并且我了解到这样做的唯一方法 - 根据 [1] - 是通过发出 PUT 请求,将现有对象添加到集合中并添加新对象而不使用身份证。

我已经复制了 [1] 中所示的示例:

https://[DOMAIN].attasksandbox.com/attask/api/v5.0/RESVT?method=POST&sessionID=330051c6aaa24cb48edb3eab113d3a5a&updates=[{ "userID": "57270ab200030c6814a20577576f8399", "startDate": "2016-08-12", "endDate": "2016-08-15" }, { "ID": "575e7a27001a0dd8312a29defd886b78", "objCode": "RESVT", "startDate": "2016-06-01T00:00:00:000+0200", "endDate": "2016-06-04T00:00:00:000+0200", "userID": "57270ab200030c6814a20577576f8399" }]&atomic=true

执行请求时的响应:

{ "data": [ { "objCode": "RESVT", "ID": "575e7410001a031e06534a49b3032fd1" }, { "objCode": "RESVT", "ID": "575e7410001a031f1ee4a0379c96d287" } ] }

但我在用户的 Timeoff 页面(以及通过 API 搜索 timeoff 对象时)看到的唯一 timeoff 是更新参数中的 last 对象。在上面的示例中,它将是 6 月 1 日至 4 日。如果我重新排列更新数组,使 6 月 1 日至 4 日是列表中的第一个,那么我会看到 8 月 12 日至 15 日。

我也尝试过使用 method=PUT 而不是 method=POST 但后来我收到了这条消息:

{ "error": { "class": "java.lang.IllegalArgumentException", "message": "Must specify an ID for each object that is edited" } }

我做错了什么?

[1]:php - AtTask API - 添加休假时间 - 代码日志 AtTask API - Adding Time Off Hours

【问题讨论】:

    标签: attask


    【解决方案1】:

    您遇到的问题是您在 RESVT 对象而不是 USER 对象上进行更新,因此每次调用都会向用户 timeOff 添加一个新项目,替换所有以前的条目,所以您只看到 Last on 的原因是因为它是最后一个运行的,并且所有之前的条目都被删除了。

    要更正此问题,您需要在用户对象上进行更新并更新预留时间集合。

    您可以通过以下调用来做到这一点。

    PUT /attask/api/v4.0/user/[userID]?&sessionID=[sessionID]&updates=
    {
        reservedTimes: 
            [ 
                { 
                    "ID": "547debb6000dea62198bd66b7c73e174", 
                    "objCode": "RESVT",
                    "endDate": "2014-07-08T23:59:00:163-0600",
                    "startDate": "2014-07-08T00:00:00:163-0600" 
                }, 
                { 
                    "ID": "547debb6000dea61b8c695ba24918fe8",
                    "objCode": "RESVT",
                    "endDate": "2014-02-13T23:59:00:329-0700",
                    "startDate": "2014-02-13T00:00:00:329-0700" 
                },
                { 
                    "objCode": "RESVT", 
                    "endDate": "2014-02-14T23:59:00:329-0700", 
                    "startDate": "2014-02-14T00:00:00:329-0700" 
                } 
            ] 
    } 
    

    【讨论】:

    • 尴尬。所有这些都已在上一个线程中显示,但不知何故我设法监督了几个细节。再次感谢。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 2012-08-03
    • 2019-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多