//private async Task<bool> GetData() //{ //} private async void OnSubmit(object sender, EventArgs e) { viewModel.VisibleLoad = true; try { ApiSaveResponse result = await TimeSheetService.CreateTimeSheetAndSubmitForPeriod(viewModel.TimeSheet.StartDate, viewModel.TimeSheet.EndDate, viewModel.SelectedUser != null?viewModel.SelectedUser.Id : null); if (result.HasErrors) { foreach (var error in result.Errors) { Common.Instance.ShowToastMessage(error.ErrorMessage, DoubleResources.DangerSnackBar); } } else { Common.Instance.ShowToastMessage("Timesheet submited!", DoubleResources.SuccessSnackBar); MessagingCenter.Send(this, "TimeSheetSubmited", true); await Navigation.PopToRootAsync(); } } catch (Exception ex) { } viewModel.VisibleLoad = false; }
private async void SaveFolder_Tapped(object sender, EventArgs e) { viewModel.VisibleLoad = true; viewModel.LoadingMessage = ""; Folder folder = new Folder(); folder.Name = txtName.Text; folder.ItemContainer_Id = containerId; ApiSaveResponse resp = await DocumentsService.AddFolder(folder); if (!resp.HasErrors) { MessagingCenter.Send(this, "FolderAdded", Guid.Empty); //for (var counter = 1; counter < 2; counter++) Navigation.RemovePage(Navigation.NavigationStack[Navigation.NavigationStack.Count - 2]); await Navigation.PopAsync(); } else { Common.Instance.ShowToastMessage("Error creating new folder. Please try again", DoubleResources.DangerSnackBar); } viewModel.VisibleLoad = false; }
private async void ApproveAll_Clicked(object sender, EventArgs e) { if (viewModel.TimeSheets == null || viewModel.TimeSheets.Count == 0) { Common.Instance.ShowToastMessage("No pending timesheets waiting for approval", DoubleResources.DangerSnackBar); return; } var resp = await DisplayActionSheet("Do you want to approve all time sheets?", "No", "Yes"); if (resp != null && resp.ToString().Length > 0 && resp.Equals("Yes")) { bool isSussessfull = true; foreach (TimeSheetPeriod ts in viewModel.TimeSheets) { ApiSaveResponse result = await TimeSheetService.ApproveAsync(ts.TimeSheetId.Value); if (result.HasErrors) { isSussessfull = false; foreach (var error in result.Errors) { Common.Instance.ShowToastMessage(error.ErrorMessage, DoubleResources.DangerSnackBar); } } } if (isSussessfull) { Common.Instance.ShowToastMessage("All timesheets approved!", DoubleResources.SuccessSnackBar); } GetData(); } }
private async void OnApprove(object sender, EventArgs e) { if (approval.ApprovalRequestApprovals != null && approval.ApprovalRequestApprovals.Count() > 0) { foreach (var app in approval.ApprovalRequestApprovals) { if (app.Approver != null && app.Approver.Id == Common.CurrentWorkspace.UserID) { ApiSaveResponse result = await ApprovalRequestApprovalService.client.ApproveApprovalRequestAsync(app.Id.Value); if (result.HasErrors) { foreach (var error in result.Errors) { Common.Instance.ShowToastMessage(error.ErrorMessage, DoubleResources.DangerSnackBar); } } else { Common.Instance.ShowToastMessage("Approval Request approved!", DoubleResources.SuccessSnackBar); Common.RefreshWorkList = true; await Navigation.PopAsync(); } } } } //await Navigation.PopAsync(); }
private async void OnUpdateStatus(object sender, EventArgs e) { viewModel.VisibleLoad = true; viewModel.LoadingMessage = ""; try { ApiSaveResponse result = await TimeSheetService.RejectAsync(Timesheet, txtCommentBody.Text ?? string.Empty); if (result.HasErrors) { viewModel.VisibleLoad = false; foreach (var error in result.Errors) { Common.Instance.ShowToastMessage(error.ErrorMessage, DoubleResources.DangerSnackBar); } } else { Common.Instance.ShowToastMessage("Timesheet rejected!", DoubleResources.SuccessSnackBar); viewModel.VisibleLoad = false; MessagingCenter.Send(this, "TimeSheetRejected", true); await Navigation.PopToRootAsync(); } } catch (Exception ex) { Common.Instance.ShowToastMessage("Error communication with server!", DoubleResources.DangerSnackBar); viewModel.VisibleLoad = false; } }
//private async Task<bool> GetData() //{ //} private async void OnSubmit(object sender, EventArgs e) { try { viewModel.VisibleLoad = true; ApiSaveResponse result = await ExpenseReportService.client.SubmitExpenseReportAsync(viewModel.EarliestExpenseEntryDate, DateTime.Now, viewModel.SelectedUser != null?viewModel.SelectedUser.Id : null); if (result.HasErrors) { foreach (var error in result.Errors) { Common.Instance.ShowToastMessage(error.ErrorMessage, DoubleResources.DangerSnackBar); } } else { MessagingCenter.Send(this, "CurrentExpenseReportSubmited", true); await Navigation.PopToRootAsync(); } } catch (Exception ex) { } viewModel.VisibleLoad = false; }
public static async Task <ApiSaveResponse> UploadFile(string dataArray, string fileName, Guid id) { //create new file item ProjectInsight.Models.Files.FileItem myFile = new ProjectInsight.Models.Files.FileItem(); myFile.ItemContainer_Id = id; myFile.Name = fileName; //create FileUpload object for file item ProjectInsight.Models.Files.FileUpload fileUpload = new ProjectInsight.Models.Files.FileUpload(); fileUpload.FileName = fileName; fileUpload.FileContentsBase64Encoded = dataArray; //Content of the file to upload myFile.UploadedFile = fileUpload; //Save and return a response ApiSaveResponse saveFileResp = await clientFiles.SaveAsync(myFile); return(saveFileResp); }
private async void OnUpdateStatus_Tapped(object sender, EventArgs e) { if (string.IsNullOrEmpty(txtCommentBody.Text)) { sfComment.HasError = true; //Common.Instance.ShowToastMessage("Please Add Rejection Comment", DoubleResources.DangerSnackBar); return; } try { var resp = await DisplayActionSheet("Are you sure you want to reject?", "No", "Yes"); if (resp != null && resp.ToString().Length > 0 && resp.Equals("Yes")) { viewModel.VisibleLoad = true; viewModel.LoadingMessage = ""; ApiSaveResponse result = await ApprovalRequestApprovalService.client.DeniedApprovalRequestAsync(ApprovalRequestId, txtCommentBody.Text ?? txtCommentBody.Text); if (result.HasErrors) { viewModel.VisibleLoad = false; foreach (var error in result.Errors) { Common.Instance.ShowToastMessage(error.ErrorMessage, DoubleResources.DangerSnackBar); } } else { Common.Instance.ShowToastMessage("Approval Request Rejected!", DoubleResources.SuccessSnackBar); viewModel.VisibleLoad = false; MessagingCenter.Send(this, "ApprovalRequestRejected", true); Common.RefreshWorkList = true; await Navigation.PopToRootAsync(); } } } catch (Exception ex) { Common.Instance.ShowToastMessage("Error communication with server!", DoubleResources.DangerSnackBar); } viewModel.VisibleLoad = false; }
private async void OnApprove(object sender, EventArgs e) { viewModel.VisibleLoad = true; ApiSaveResponse result = await TimeSheetService.ApproveAsync(viewModel.CurrentPeriod.TimeSheetId.Value); if (result.HasErrors) { foreach (var error in result.Errors) { Common.Instance.ShowToastMessage(error.ErrorMessage, DoubleResources.DangerSnackBar); } } else { Common.Instance.ShowToastMessage("Timesheet approved!", DoubleResources.SuccessSnackBar); } viewModel.VisibleLoad = false; MessagingCenter.Send(this, "TimeSheetApproved", true); await Navigation.PopToRootAsync(); }
private async void Save_Tapped(object sender, EventArgs e) { foreach (var item in viewModel.CurrentEntry.ExpenseCodes) { ProjectInsight.Models.TimeAndExpense.ExpenseEntry expenseEntry = new ProjectInsight.Models.TimeAndExpense.ExpenseEntry(); if (item.Quantity != null && item.Rate != null) { expenseEntry.Qty = Convert.ToDecimal(item.Quantity); expenseEntry.ActualCost = expenseEntry.Qty * item.Rate; expenseEntry.Date = viewModel.CurrentEntry.EntryDate; expenseEntry.Description = item.Name; expenseEntry.Project_Id = ProjectId; expenseEntry.ExpenseCode_Id = item.Id; expenseEntry.UserCreated_Id = Common.CurrentWorkspace.UserID; expenseEntry.User_Id = Common.CurrentWorkspace.UserID; ApiSaveResponse result = await ExpenseEntryService.client.SaveAsync(expenseEntry); if (result.HasErrors) { string errorMsg = string.Empty; foreach (var error in result.Errors) { errorMsg += error.ErrorMessage + Environment.NewLine; } Common.Instance.ShowToastMessage(errorMsg, DoubleResources.DangerSnackBar); } else { Common.Instance.ShowToastMessage("Saved", DoubleResources.SuccessSnackBar); ResetModel(DateTime.Now); } } } await Navigation.PopToRootAsync(); }
private async void OnApprove(object sender, EventArgs e) { var resp = await DisplayActionSheet("Are you sure you want to approve?", "No", "Yes"); if (resp != null && resp.ToString().Length > 0 && resp.Equals("Yes")) { ApiSaveResponse result = await ExpenseReportService.client.ApproveExpenseReportAsync(viewModel.Id.Value, "Approved"); if (result.HasErrors) { foreach (var error in result.Errors) { Common.Instance.ShowToastMessage(error.ErrorMessage, DoubleResources.DangerSnackBar); } } else { Common.Instance.ShowToastMessage("Expense Report Approved!", DoubleResources.SuccessSnackBar); } MessagingCenter.Send(this, "ExpenseReportApproved", true); await Navigation.PopToRootAsync(); } }
private async void OnSave_Tapped(object sender, EventArgs e) { //selectiraniot Task e //var selTask = viewModel.SelectedTask; bool validationError = false; if (viewModel.SelectedApprovers == null || viewModel.SelectedApprovers.Count == 0) { viewModel.SelectedApproversError = true; validationError = true; } if (validationError) { return; } viewModel.VisibleLoad = true; ProjectInsight.Models.ApprovalRequests.ApprovalRequest approval = new ProjectInsight.Models.ApprovalRequests.ApprovalRequest(); approval.Name = viewModel.Name; approval.Description = viewModel.Description; //approval.UserCreated_Id = Common.CurrentWorkspace.UserID; //approval.Id = viewModel.Id; approval.AreAllApproversRequired = viewModel.AreAllApproversRequired; approval.IsSequentialApproval = viewModel.IsSequentialApproval; approval.ApprovalRequestDateTimeUTC = DateTime.UtcNow; approval.ApprovalRequestStateType = 0; approval.ItemContainer_Id = viewModel.Container_Id; if (viewModel.Container_Id.HasValue && viewModel.Container_Id != null) { approval.ApprovalRequestItems = new List <ApprovalRequestItem>(); ApprovalRequestItem item = new ApprovalRequestItem(); // item.ApprovalRequest_Id = resp.SavedId; item.Item_Id = viewModel.Container_Id; approval.ApprovalRequestItems.Add(item); } int i = 0; if (viewModel.SelectedApprovers != null && viewModel.SelectedApprovers.Count > 0) { approval.ApprovalRequestApprovals = new List <ApprovalRequestApproval>(); foreach (var approver in viewModel.SelectedApprovers) { ApprovalRequestApproval app = new ApprovalRequestApproval(); app.Approver_Id = approver.Id; app.ApprovalOrder = i; //app.ApprovalRequest_Id = resp.SavedId; app.ApprovalRequestApprovalStateType = 0; app.Comment = ""; i++; approval.ApprovalRequestApprovals.Add(app); } } ApiSaveResponse resp = await ApprovalRequestService.Save(approval); if (resp == null) { Common.Instance.ShowToastMessage("Error,check again.", DoubleResources.DangerSnackBar); } else if (resp.HasErrors) { Common.Instance.ShowToastMessage(resp.Errors[0].ErrorMessage, DoubleResources.DangerSnackBar); } else if (!resp.HasErrors) { //if (viewModel.Container_Id.HasValue && viewModel.Container_Id != null) //{ // ApprovalRequestItem item = new ApprovalRequestItem(); // item.ApprovalRequest_Id = resp.SavedId; // item.Item_Id = viewModel.Container_Id; // try // { // ApiSaveResponse respItem = await ApprovalRequestService.clientItem.SaveAsync(item); // if (respItem == null) // { // Common.Instance.ShowToastMessage("Error,check again.", DoubleResources.DangerSnackBar); // } // else if (respItem.HasErrors) // { // Common.Instance.ShowToastMessage(respItem.Errors[0].ErrorMessage, DoubleResources.DangerSnackBar); // } // } // catch (Exception ex) // { // } //} //Common.Instance.ShowToastMessage("Approval Saved", DoubleResources.SuccessSnackBar); Common.RefreshWorkList = true; await Navigation.PushAsync(new NewApprovalPage_Congratulations()); } viewModel.VisibleLoad = false; }
private async void OnSaveAddTimeEntry(object sender, EventArgs e) { //selectiraniot Task e //var selTask = viewModel.SelectedTask; bool validationError = false; if (string.IsNullOrEmpty(viewModel.Name)) { viewModel.NameError = true; validationError = true; } else { //lblName.TextColor = (Color)Application.Current.Resources["DarkGrayTextColor"]; viewModel.NameError = false; } if (viewModel.SelectedProject == null) { viewModel.ProjectError = true; frmProject.BorderColor = (Color)Application.Current.Resources["RedTextColor"];; cmbProject.WatermarkColor = (Color)Application.Current.Resources["RedTextColor"];; validationError = true; } else { frmProject.BorderColor = (Color)Application.Current.Resources["LightGrayTextColor"];; cmbProject.WatermarkColor = (Color)Application.Current.Resources["LightGrayTextColor"];; viewModel.ProjectError = false; } if (validationError) { return; } viewModel.VisibleLoad = true; viewModel.LoadingMessage = ""; //Create ToDo item ProjectInsight.Models.ToDos.ToDo toDo = new ProjectInsight.Models.ToDos.ToDo(); toDo.Name = viewModel.Name; toDo.Description = viewModel.Description; toDo.StartDateTimeUTC = viewModel.StartDate; toDo.EndDateTimeUTC = viewModel.EndDate; toDo.UserCreated_Id = Common.CurrentWorkspace.UserID; toDo.CreatedDateTimeUTC = DateTime.Now.ToUniversalTime(); toDo.UserAssignedBy_Id = Common.CurrentWorkspace.UserID; toDo.UserAssignedTo_Id = viewModel.SelectedUser != null ? viewModel.SelectedUser.Id : Common.CurrentWorkspace.UserID; if (viewModel.Id == null) { toDo.ItemContainer_Id = viewModel.SelectedProject.Id; toDo.ProjectAffiliation_Id = viewModel.SelectedProject.Id; } toDo.Id = viewModel.Id; ApiSaveResponse resp = await ToDoService.SaveTodo(toDo); if (!resp.HasErrors) { Common.RefreshWorkList = true; Common.RefreshProjectsList = true; Common.Instance.ShowToastMessage("ToDo Saved", DoubleResources.SuccessSnackBar); var succsave = settings.Set("NewToDo_SelectedProject", viewModel.SelectedProject.Id.ToString()); succsave = settings.Set("NewToDo_SelectedUser", toDo.UserAssignedTo_Id.ToString()); MessagingCenter.Send(this, "TodoAdded", resp.SavedId); if (viewModel.Id != null) { MessagingCenter.Send(this, "TodoUpdated", resp.SavedId); await Navigation.PopAsync(); } else { await Navigation.PopToRootAsync(); } } else { if (resp.Errors.Count > 0) { Common.Instance.ShowToastMessage(resp.Errors[0].ErrorMessage, DoubleResources.DangerSnackBar); } else { Common.Instance.ShowToastMessage("Error,check again.", DoubleResources.DangerSnackBar); } } viewModel.VisibleLoad = false; }
private async void OnSaveAddTimeEntry(object sender, EventArgs e) { //selectiraniot Task e //var selTask = viewModel.SelectedTask; if (string.IsNullOrEmpty(viewModel.Name)) { viewModel.NameError = true; //lblName.TextColor = Color.DarkRed; return; } else { //lblName.TextColor = (Color)Application.Current.Resources["DarkGrayTextColor"]; viewModel.NameError = false; } ProjectInsight.Models.Projects.Project project = new ProjectInsight.Models.Projects.Project(); project.Name = viewModel.Name; project.Description = viewModel.Description; project.ScheduleStartDate = viewModel.StartDate; if (viewModel.SelectedType != null) { project.ProjectType_Id = viewModel.SelectedType.Id; } project.ProjectStatus_Id = viewModel.SelectedStatus.Id; project.UserCreated_Id = Common.CurrentWorkspace.UserID; project.CreatedDateTimeUTC = DateTime.Now.ToUniversalTime(); //TODO we need to create project without itemcontainer_id //project.ItemContainer_Id = new Guid("49eeed111c7b45cc8bd6347c54b7f1f5"); //List<ProjectInsight.Models.Folders.Folder> folders = DocumentsService.GetFoldersByContainer(parentId); //Folder docFolder = folders.Where(x => x.Name == "Documents").FirstOrDefault(); //if (docFolder != null) //{ // parentId = docFolder.Id.Value; //} //project.Color = viewModel.SelectedColor; ApiSaveResponse resp = await ProjectsService.Save(project); if (!resp.HasErrors) { Common.RefreshProjectsList = true; Common.Instance.ShowToastMessage("Project Saved", DoubleResources.SuccessSnackBar); MessagingCenter.Send(this, "ProjectAdded", resp.SavedId); if (ReturnToPreviousPage) { await Navigation.PopAsync(); } else { await Navigation.PopToRootAsync(); } } else { if (resp.Errors != null && resp.Errors.Count > 0) { Common.Instance.ShowToastMessage(resp.Errors[0].ErrorMessage, DoubleResources.DangerSnackBar); } else { Common.Instance.ShowToastMessage("Error,check again.", DoubleResources.DangerSnackBar); } } }
private async void OnSaveAddTimeEntry(object sender, EventArgs e) { //selectiraniot Task e //var selTask = viewModel.SelectedTask; bool validationError = false; if (string.IsNullOrEmpty(viewModel.Name)) { viewModel.NameError = true; validationError = true; } else { //lblName.TextColor = (Color)Application.Current.Resources["DarkGrayTextColor"]; viewModel.NameError = false; } if (viewModel.SelectedProject == null) { viewModel.ProjectError = true; frmProject.BorderColor = (Color)Application.Current.Resources["RedTextColor"];; cmbProject.WatermarkColor = (Color)Application.Current.Resources["RedTextColor"];; validationError = true; } else { frmProject.BorderColor = (Color)Application.Current.Resources["LightGrayTextColor"];; cmbProject.WatermarkColor = (Color)Application.Current.Resources["LightGrayTextColor"];; viewModel.ProjectError = false; } if (validationError) { return; } viewModel.VisibleLoad = true; viewModel.LoadingMessage = ""; ProjectInsight.Models.Tasks.Task task = new ProjectInsight.Models.Tasks.Task(); task.Name = viewModel.Name; task.Description = viewModel.Description; task.Project_Id = viewModel.SelectedProject.Id; task.UserCreated_Id = Common.CurrentWorkspace.UserID; task.CreatedDateTimeUTC = DateTime.Now.ToUniversalTime(); task.UserAssignedBy_Id = Common.CurrentWorkspace.UserID; task.TaskOwner_Id = viewModel.SelectedUser != null ? viewModel.SelectedUser.Id : Common.CurrentWorkspace.UserID; //task.SkipProjectScheduleCalculateOnSave = false; //task.ConstraintType = 3; task.StartDateTimeUTC = viewModel.StartDate; task.EndDateTimeUTC = viewModel.EndDate; // task.StartDateTimeUserLocal = viewModel.StartDate; // task.EndDateTimeUserLocal = viewModel.EndDate; task.Id = viewModel.Id; ApiSaveResponse resp = await TasksService.Save(task); if (resp != null && !resp.HasErrors) { Common.RefreshWorkList = true; Common.RefreshProjectsList = true; var succsave = settings.Set("NewTask_SelectedProject", viewModel.SelectedProject.Id.ToString()); succsave = settings.Set("NewTask_SelectedUser", task.TaskOwner_Id.ToString()); Common.Instance.ShowToastMessage("Task Saved", DoubleResources.SuccessSnackBar); MessagingCenter.Send(this, "TaskAdded", resp.SavedId); if (viewModel.Id != null || pId != Guid.Empty) { MessagingCenter.Send(this, "TaskUpdated", resp.SavedId); for (var counter = 1; counter < 2; counter++) { Navigation.RemovePage(Navigation.NavigationStack[Navigation.NavigationStack.Count - 2]); } await Navigation.PopAsync(); } else { await Navigation.PopToRootAsync(); } } else { if (resp != null && resp.Errors.Count > 0) { Common.Instance.ShowToastMessage(resp.Errors[0].ErrorMessage, DoubleResources.DangerSnackBar); } else { Common.Instance.ShowToastMessage("Error, check again.", DoubleResources.DangerSnackBar); } } viewModel.VisibleLoad = false; }
private async Task <bool> SaveData() { ProjectInsight.Models.TimeAndExpense.ExpenseEntry expenseEntry = new ProjectInsight.Models.TimeAndExpense.ExpenseEntry(); try { if (viewModel.SelectedExpenseType == 1) { //RECEIPT expenseEntry.ActualCost = viewModel.Amount; if (viewModel.PhotoArray != null) { try { ProjectInsight.Models.Files.FileUpload file = new ProjectInsight.Models.Files.FileUpload(); if (string.IsNullOrEmpty(viewModel.PhotoName)) { file.FileName = "IMG_" + DateTime.Now.ToString("yyyyMMdd_HHmmss") + ".jpg"; //string.Format("Receipt{0}.jpg", viewModel.Date.Value.ToString("_yyyyMMdd")); } else { file.FileName = viewModel.PhotoName; } string fileEncodedString = Convert.ToBase64String(viewModel.PhotoArray); byte[] PhotoArray = Encoding.UTF8.GetBytes(fileEncodedString); System.IO.Stream stream = new System.IO.MemoryStream(PhotoArray); file.FileContentsAsStream = stream; file.FileContentsBase64Encoded = fileEncodedString; expenseEntry.UploadedFile = file; } catch (Exception ex) { } } } else if (viewModel.SelectedExpenseType == 2) { //MILEAGE expenseEntry.Qty = viewModel.Amount; expenseEntry.UnitPrice = viewModel.CostPerMile; expenseEntry.ActualCost = expenseEntry.Qty * expenseEntry.UnitPrice; } else if (viewModel.SelectedExpenseType == 3) { //Other expenseEntry.Qty = viewModel.Total; expenseEntry.UnitPrice = viewModel.Amount; expenseEntry.ActualCost = expenseEntry.Qty * expenseEntry.UnitPrice; } expenseEntry.Date = viewModel.Date; expenseEntry.Description = viewModel.Description; if (viewModel.SelectedCompany != null) { expenseEntry.Company_Id = viewModel.SelectedCompany.Id; } if (viewModel.SelectedProject != null) { expenseEntry.Project_Id = viewModel.SelectedProject.Id; } if (viewModel.SelectedTask != null) { expenseEntry.Task_Id = viewModel.SelectedTask.Id; } if (viewModel.SelectedExpenseCode != null) { expenseEntry.ExpenseCode_Id = viewModel.SelectedExpenseCode.Id; } expenseEntry.UserCreated_Id = Common.CurrentWorkspace.UserID; expenseEntry.User_Id = Common.CurrentWorkspace.UserID; ApiSaveResponse result = await ExpenseEntryService.client.SaveAsync(expenseEntry); if (result.HasErrors) { string errorMsg = string.Empty; foreach (var error in result.Errors) { errorMsg += error.ErrorMessage + Environment.NewLine; //Common.Instance.ShowToastMessage(error.ErrorMessage, DoubleResources.DangerSnackBar); } slHeader.Text = "Error"; slHeader.TextColor = (Color)Application.Current.Resources["RedTextColor"]; slError.IsVisible = true; slError.Text = errorMsg; imgIcon.Source = "error.png"; } else { } } catch (Exception ex) { slHeader.Text = "Error"; slHeader.TextColor = (Color)Application.Current.Resources["RedTextColor"]; slError.IsVisible = true; slError.Text = "Unknown Error!"; imgIcon.Source = "error.png"; } return(true); }
private async Task <bool> SaveData() { ProjectInsight.Models.TimeAndExpense.TimeEntry timeEntry = new ProjectInsight.Models.TimeAndExpense.TimeEntry(); try { if (viewModel.UseHoursMinutesInput) { //decimal dActualHours = Convert.ToDecimal(TimeSpan.Parse(viewModel.ActualHours).TotalHours); //timeEntry.ActualHours = dActualHours; timeEntry.ActualTimeString = viewModel.ActualHours.Trim(); } else { decimal act = 0; bool succPars = decimal.TryParse(viewModel.ActualHoursDec, out act); if (succPars) { timeEntry.ActualHours = act; } } timeEntry.User_Id = Common.CurrentWorkspace.UserID; timeEntry.Description = viewModel.Description; timeEntry.Company_Id = viewModel.SelectedCompany != null ? viewModel.SelectedCompany.Id : null; timeEntry.Project_Id = viewModel.SelectedProject != null ? viewModel.SelectedProject.Id : null; if (viewModel.ItemType == ItemType.Task) { timeEntry.Task_Id = viewModel.SelectedTask != null ? viewModel.SelectedTask.Id : null; } else if (viewModel.ItemType == ItemType.Issue) { timeEntry.Issue_Id = viewModel.SelectedTask != null ? viewModel.SelectedTask.Id : null; } else if (viewModel.ItemType == ItemType.Todo) { timeEntry.ToDo_Id = viewModel.SelectedTask != null ? viewModel.SelectedTask.Id : null; } timeEntry.ExpenseCode_Id = viewModel.SelectedExpenseCode.Id; timeEntry.IsBillable = viewModel.IsBillable; timeEntry.Date = viewModel.Date; timeEntry.CreatedDateTimeUTC = DateTime.UtcNow; //timeEntry.TimerCreatedDateTimeUTC = DateTime.UtcNow; ApiSaveResponse result = await TimeEntryService.client.SaveAsync(timeEntry); if (result.HasErrors) { string errorMsg = string.Empty; foreach (var error in result.Errors) { errorMsg += error.ErrorMessage + Environment.NewLine; //Common.Instance.ShowToastMessage(error.ErrorMessage, DoubleResources.DangerSnackBar); } slHeader.Text = "Error"; slHeader.TextColor = (Color)Application.Current.Resources["RedTextColor"]; slError.IsVisible = true; slError.Text = errorMsg; imgIcon.Source = "error.png"; } else { } } catch (Exception ex) { slHeader.Text = "Error"; slHeader.TextColor = (Color)Application.Current.Resources["RedTextColor"]; slError.IsVisible = true; slError.Text = "Unknown Error!"; imgIcon.Source = "error.png"; } return(true); }