public TimeSheetDetailViewModel(WorklogResponse worklog)
 {
     this.worklog            = worklog;
     UpdateTimesheetCommand  = new Command(UpdateTimesheet);
     ConfirmTimesheetCommand = new Command(ConfirmTimesheet);
     confirmed = Convert.ToBoolean(worklog.Confirmed);
 }
예제 #2
0
        public List <WorklogResponse> WorklogsForPeriod(OrganizationResponse organization, DateTime from, DateTime to)
        {
            try
            {
                if (organization != null)
                {
                    List <WorklogResponse> worklogs = new List <WorklogResponse>();

                    var client = new HttpClient();
                    var path   = string.Format(Properties.Resources.SwaggerUrl + "/users/current/worklogs?from={0}&to={1}", string.Format("{0:yyyy-MM-dd}", from), string.Format("{0:yyyy-MM-dd}", to));
                    client.Timeout = new TimeSpan(0, 0, 5);
                    client.DefaultRequestHeaders.Add("Authorization", "Bearer " + App.Token);
                    var    request = client.GetAsync(path);
                    var    result  = request.Result;
                    string content = result.Content.ReadAsStringAsync().Result;
                    var    json    = JArray.Parse(content);
                    foreach (var worklog in json)
                    {
                        var organizationLocal = OrgApi.GetOrgApi().GetOrganization(worklog["activity"]["project"]["organization"]["id"].ToString());
                        if (organizationLocal.Id == organization.Id)
                        {
                            var project = OrgApi.GetOrgApi().GetProject(organization.Id, Convert.ToInt64(worklog["activity"]["project"]["id"]));
                            if (project != null)
                            {
                                var activity     = new ActivityResponse(Convert.ToInt64(worklog["activity"]["id"]), worklog["activity"]["name"].ToString(), worklog["activity"]["description"].ToString(), Convert.ToBoolean(worklog["activity"]["billable"].ToString()), project);
                                var workLogLocal = new WorklogResponse(Convert.ToInt32(worklog["id"]), worklog["userId"].ToString(), activity, Convert.ToDateTime(worklog["day"]), Convert.ToInt32(worklog["loggedMinutes"]), Convert.ToBoolean(worklog["confirmed"]));
                                worklogs.Add(workLogLocal);
                            }
                        }
                    }

                    return(worklogs.OrderByDescending(w => w.Day).ToList());
                }
                else
                {
                    return(new List <WorklogResponse>());
                }
            }
            catch (ApiException ex)
            {
                Popup.ShowPopupError(ex.Message);
                return(new List <WorklogResponse>());
            }
            catch (Exception ex)
            {
                Popup.ShowPopupError(ex.Message);
                return(new List <WorklogResponse>());
            }
        }
예제 #3
0
 public TimesheetViewModel(WorklogResponse worklog)
 {
     tsService              = new TSService();
     userService            = new UserService();
     date                   = worklog.Day;
     hours                  = Math.Round(Convert.ToDecimal(worklog.LoggedMinutes) / 60, 2);
     UpdateTimesheetCommand = new Command(UpdateTimesheet);
     update                 = true;
     if (worklog.Activity.Project != null && worklog.Activity.Project.Organization != null)
     {
         selectedOrganization = worklog.Activity.Project.Organization;
         selectedProject      = worklog.Activity.Project;
         selectedActivity     = worklog.Activity;
     }
     this.worklog = worklog;
 }
예제 #4
0
 public bool UpdateWorklog(WorklogResponse worklog, long?loggedMinutes, string day, OrganizationResponse organization, ProjectResponse project, ActivityResponse activity)
 {
     try
     {
         var updateWorklogrequest = new UpdateWorklogRequest(worklog.Id, UserApi.GetUserApi().GetCurrentUser().Id, day, loggedMinutes, true);
         var response             = OrgApi.GetOrgApi().UpdateWorklogWithHttpInfo(organization.Id, project.Id, activity.Id, worklog.Id, updateWorklogrequest);
         if (response.StatusCode == 200)
         {
             return(true);
         }
         else
         {
             throw new ApiException();
         }
     }
     catch (ApiException ex)
     {
         if (ex.ErrorCode == 404)
         {
             var    json      = JObject.Parse(ex.ErrorContent);
             string errorCode = json["errorCode"];
             if (errorCode == "6004")
             {
                 Popup.ShowPopupError("Activity not found");
                 return(false);
             }
             else
             {
                 string message = json["message"];
                 Popup.ShowPopupError(message);
                 return(false);
             }
         }
         Popup.ShowPopupError(ex.Message);
         return(false);
     }
     catch (Exception ex)
     {
         Popup.ShowPopupError(ex.Message);
         return(false);
     }
 }
 public TimesheetDetailPage(WorklogResponse worklog)
 {
     InitializeComponent();
     BindingContext = new TimeSheetDetailViewModel(worklog);
 }
예제 #6
0
 public TsEntryPage(WorklogResponse worklog)
 {
     InitializeComponent();
     BindingContext = new TimesheetViewModel(worklog);
 }