private async Task <string> GetReason() { var modelTasks = TasksViewModel.GetInstance(); return(await dialogService.DisplayActionList("Detalle de suspensión", modelTasks.SuspendMessages.ToArray())); }
private async Task <bool> ChangueTaskState(Models.Task task) { if (navigationService.VerifyNavigation("LaborTabbedPage")) { string[] strings = { "Iniciar", "Suspender", "Enviar a revisión" }; var value = await dialogService.DisplayActionList("Tarea: " + this.TaskName, strings); byte newState = 0; switch (value) { case "Iniciar": newState = Constant.Iniciar; break; case "Suspender": newState = Constant.Suspender; if (newState == task.StateId) { return(false); } if (task.StateId == Constant.Abrir) { await dialogService.ShowMessage("", "Una tarea creada solo puede ser puesta en ejecución."); return(false); } if (task.StateId == Constant.Revision) { await dialogService.ShowMessage("", "La tarea se encuentra en revisión, no la puede suspender."); return(false); } this.ReasonMessage = await GetReason(); if (string.IsNullOrEmpty(this.ReasonMessage) || this.ReasonMessage == "Salir") { this.ReasonMessage = ""; return(false); } break; case "Enviar a revisión": newState = Constant.Revision; if (task.StateId == Constant.Abrir) { await dialogService.ShowMessage("", "Una tarea creada solo puede ser puesta en ejecución."); return(false); } if (task.IsRecurrent && task.StateId != Constant.Revision) { await dialogService.ShowMessage("", "No puede enviar a revisión una tarea recurrente."); return(false); } if (string.IsNullOrEmpty(task.Detail) && task.StateId != Constant.Abrir && task.LaborsCount == 0) { await dialogService.ShowMessage("", "Esta enviando una tarea a revisión sin labores. Debe ingresar un detalle."); return(false); } break; default: return(false); } if (newState == task.StateId) { return(false); } var mainModel = MainViewModel.GetInstance(); task.LastUpdateUser = mainModel.CurrentUser.UserCode; task.NewStateId = newState; this.NewStateId = newState; task.Action = ResourceCodes.DciModificarTarea; task.Resource = mainModel.CurrentUser; task.ReasonMessage = this.ReasonMessage;; try { //Se llama al servicio que actualiza una labor en la base de datos y se obtiene la repuesta var response = await apiService.Put(mainModel.urlBase, "api/", "TareaAPI/PutEstadoTarea/", task); if (response.IsSuccess) { if (response.Message == "2") { await dialogService.ShowMessage("", "No puede enviar la tarea a revisión, aún le quedan labores pendientes."); } else if (response.Message == "10") { await dialogService.ShowMessage("", "No puede enviar la tarea a revisión, hay labores con fecha final mayor a hoy."); } this.StateId = newState; var TasksList = TasksViewModel.GetInstance(); TasksList.Refresh(); } } catch (Exception ex) { if (ex.Message.Contains("etapa")) { await dialogService.ShowMessage("", "No puede iniciar la tarea porque la etapa asociada aún no ha iniciado."); } else if (ex.Message.Contains("rol")) { await dialogService.ShowMessage("", "No puede iniciar la tarea porque su rol en el proyecto aún no ha iniciado."); } else { await dialogService.ShowMessage("Error", "Ocurrió un error al guardar la información."); } } } return(true); }