예제 #1
0
        //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;
        }
예제 #2
0
        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;
        }
예제 #7
0
        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);
        }
예제 #8
0
        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();
        }
예제 #11
0
        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;
        }
예제 #13
0
        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;
        }
예제 #14
0
        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);
                }
            }
        }
예제 #15
0
        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);
        }
예제 #17
0
        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);
        }