Exemple #1
0
        public object Put(Time_Billable request)
        {
            ApiUser hdUser = request.ApiUser;

            //v1
            if (request.key == 0 && request.billable != null && request.billable.Contains("/"))
            {
                string[] keys = request.billable.Split('/');
                request.is_billable = keys[0].StartsWith("billable", StringComparison.InvariantCultureIgnoreCase);
                request.key         = Convert.ToInt32(keys[1]);
            }
            //v2
            if (request.key == 0)
            {
                throw new HttpError(HttpStatusCode.NotFound, "Time Id is missing");
            }
            try
            {
                if (request.is_billable.HasValue && !request.hours.HasValue)
                {
                    bigWebApps.bigWebDesk.Data.Tickets.SetBillableTimeEntry(hdUser.OrganizationId, hdUser.DepartmentId, request.key, request.is_project_log, request.is_billable.Value);
                    return(new HttpResult("", HttpStatusCode.OK));
                }
                if (request.hidden_from_invoice.HasValue && !request.hours.HasValue)
                {
                    if (request.is_project_log)
                    {
                        bigWebApps.bigWebDesk.Data.Project.HideFromInvoiceProjectTime(hdUser.OrganizationId, hdUser.DepartmentId, request.key, request.hidden_from_invoice.Value);
                    }
                    else
                    {
                        bigWebApps.bigWebDesk.Data.Tickets.HideFromInvoiceTicketTime(hdUser.OrganizationId, hdUser.DepartmentId, request.key, request.hidden_from_invoice.Value);
                    }
                    return(new HttpResult("", HttpStatusCode.OK));
                }
                int    _contract_id = request.prepaid_pack_id.HasValue ? request.prepaid_pack_id.Value : 0;
                string contractName = string.Empty;
                if (!request.is_project_log)
                {
                    if (_contract_id > 0 && request.key > 0)
                    {
                        DataRow row = bigWebApps.bigWebDesk.Data.Tickets.SelectTicketTimeByID(hdUser.OrganizationId, hdUser.DepartmentId, request.key);
                        if (row != null)
                        {
                            DateTime date = DateTime.UtcNow;
                            if (request.date.HasValue && request.date > DateTime.MinValue)
                            {
                                date = (DateTime)request.date;
                            }
                            contractName = Contracts.CheckAccountContract(hdUser, (int)row["AccountID"], _contract_id, date, request.key, 0, (int)row["ProjectID"]);
                        }
                    }
                    Ticket.EditTime(hdUser, request.key, request.start_date, request.stop_date, request.is_billable, request.date, request.hours, request.task_type_id, request.note_text,
                                    request.remain_hours, request.complete, request.prepaid_pack_id, contractName);
                }
                else
                {
                    int      techID    = (request.tech_id > 0 && hdUser.IsAdmin) ? request.tech_id : hdUser.UserId;
                    int      accountID = request.account_id != 0 ? request.account_id : -1;
                    int      projectID = request.project_id > 0 ? request.project_id : -1;
                    DateTime date      = DateTime.UtcNow;
                    if (request.date.HasValue && request.date > DateTime.MinValue)
                    {
                        date = (DateTime)request.date;
                    }
                    Contracts.CheckAccountContract(hdUser, accountID, request.prepaid_pack_id ?? 0, date, 0, request.key, projectID);
                    Models.Projects.EditProjectTime(hdUser, accountID, projectID, techID, request.task_type_id, request.start_date, request.stop_date, request.hours, hdUser.TimeZoneOffset,
                                                    request.note_text, request.is_billable, request.date, request.key, request.prepaid_pack_id);
                }

                return(new HttpResult("", HttpStatusCode.OK));
            }
            catch (Exception ex)
            {
                throw new HttpError(Utils.ClearString(ex.Message));
            }
        }