Пример #1
0
        /*==================================================================================================================================
        * Public Methods
        *=================================================================================================================================*/
        public questStatus DoBulkUpdate(BulkUpdateViewModel bulkUpdateViewModel, out int numRows)
        {
            // Initialize
            questStatus status = null;

            numRows = -1;


            // TODO: PREP REQUEST
            BulkUpdateRequest bulkUpdateRequest = new BulkUpdateRequest();

            bulkUpdateRequest.FilterId = bulkUpdateViewModel.FilterId;
            foreach (NameValueViewModel nameValueViewModel in bulkUpdateViewModel.ColumnData)
            {
                BulkUpdateColumnValue bulkUpdateColumnValue = new BulkUpdateColumnValue();
                bulkUpdateColumnValue.Name  = nameValueViewModel.ColumnName;
                bulkUpdateColumnValue.Value = nameValueViewModel.ColumnValue;
                BufferMgr.TransferBuffer(nameValueViewModel, bulkUpdateColumnValue);
                bulkUpdateRequest.Columns.Add(bulkUpdateColumnValue);
            }


            // Perform bulk update.
            BulkUpdateMgr bulkUpdateMgr = new BulkUpdateMgr(this.UserSession);

            status = bulkUpdateMgr.PerformBulkUpdate(bulkUpdateRequest, out numRows);
            if (!questStatusDef.IsSuccess(status))
            {
                return(status);
            }
            return(status);
        }
        public ActionResult Save(BulkUpdateViewModel viewModel)
        {
            questStatus status = null;


            /*----------------------------------------------------------------------------------------------------------------------------------
            * Log Operation
            *---------------------------------------------------------------------------------------------------------------------------------*/
            status = LogOperation();
            if (!questStatusDef.IsSuccess(status))
            {
                viewModel.questStatus = status;
                return(Json(viewModel, JsonRequestBehavior.AllowGet));
            }

            /*----------------------------------------------------------------------------------------------------------------------------------
            * Authorize
            *---------------------------------------------------------------------------------------------------------------------------------*/
            status = Authorize(viewModel._ctx);
            if (!questStatusDef.IsSuccess(status))
            {
                viewModel.questStatus = status;
                return(Json(viewModel, JsonRequestBehavior.AllowGet));
            }

            /*----------------------------------------------------------------------------------------------------------------------------------
            * Perform operation.
            *---------------------------------------------------------------------------------------------------------------------------------*/
            int numRows = -1;
            BulkUpdateModeler bulkUpdateModeler = new BulkUpdateModeler(this.Request, this.UserSession);

            status = bulkUpdateModeler.DoBulkUpdate(viewModel, out numRows);
            if (!questStatusDef.IsSuccess(status))
            {
                viewModel.questStatus = status;
                return(Json(viewModel, JsonRequestBehavior.AllowGet));
            }

            /*----------------------------------------------------------------------------------------------------------------------------------
            * Return result.
            *---------------------------------------------------------------------------------------------------------------------------------*/
            // TODO: WORK OUT NUM ROWS WHEN USING A PROCEDURE.
            ////status = new questStatus(Severity.Success, String.Format("Bulk updated {0} rows", numRows));
            status = new questStatus(Severity.Success, String.Format("Bulk update performed successfully"));
            BulkUpdateViewModel bulkUpdateViewModel = new BulkUpdateViewModel(this.UserSession, viewModel);

            bulkUpdateViewModel.questStatus = status;
            return(Json(bulkUpdateViewModel, JsonRequestBehavior.AllowGet));
        }
        public async Task <ActionResult> ProcessBulkUpdate(BulkUpdateViewModel viewModel)
        {
            viewModel.CanOverrideCRProcess = User.IsInRole(R.ROLE_BACKOFFICE);

            if (ModelState.IsValid)
            {
                var fileName = FileHelper.GetTempFileName(Path.GetExtension(viewModel.BulkFile.FileName));
                viewModel.BulkFile.SaveAs(fileName);

                if (new FileInfo(fileName).Length > 1000000)
                {
                    viewModel.Result = new Services.Domain.BulkUpdateProgressModel
                    {
                        Errors = new[] { new Services.Domain.ApiError {
                                             Code = "error.maxRowsLimitReached.payload.bulkUpload"
                                         } }
                    };
                }
                else
                {
                    var payload = new BulkUpdateDto
                    {
                        BulkFileType      = viewModel.BulkUpdateType.Value,
                        FileName          = fileName,
                        OverrideCRProcess = viewModel.CanOverrideCRProcess && viewModel.OverrideCRProcess
                    };

                    var state    = UriHelper.SerializeToUrlToken(payload);
                    var response = await _establishmentWriteService.BulkUpdateAsync(payload, User);

                    System.IO.File.Delete(fileName);

                    if (response.HasErrors)
                    {
                        viewModel.Result = new Services.Domain.BulkUpdateProgressModel
                        {
                            Errors = response.Errors
                        };
                    }
                    else
                    {
                        return(RedirectToAction(nameof(Result), new { response.GetResponse().Id, state }));
                    }
                }
            }

            return(View("Index", viewModel));
        }
 public MainWindowViewModel(
     QueryInputViewModel queryInputViewModel,
     FilteredDeviceListViewModel filteredDeviceListViewModel,
     BulkUpdateViewModel bulkUpdateViewModel,
     ScheduleJobsViewModel scheduleJobsViewModel,
     CloudToDeviceViewModel cloudToDeviceViewModel)
 {
     QueryInputViewModel                     = queryInputViewModel;
     FilteredDeviceListViewModel             = filteredDeviceListViewModel;
     BulkUpdateViewModel                     = bulkUpdateViewModel;
     ScheduleJobsViewModel                   = scheduleJobsViewModel;
     CloudToDeviceViewModel                  = cloudToDeviceViewModel;
     queryInputViewModel.QueryResultUpdated += OnQueryUpdated;
     // initial query
     queryInputViewModel.ExecuteDeviceQueryCommand.Execute(null);
     queryInputViewModel.QueryError += OnQueryError;
 }
        public async Task <ActionResult> ProcessBulkUpdate(BulkUpdateViewModel viewModel)
        {
            viewModel.CanOverrideCRProcess = User.IsInRole(AuthorizedRoles.IsAdmin);

            if (ModelState.IsValid)
            {
                var fileName = FileHelper.GetTempFileName(Path.GetExtension(viewModel.BulkFile.FileName));
                viewModel.BulkFile.SaveAs(fileName);

                if (new FileInfo(fileName).Length > 1000000)
                {
                    ModelState.AddModelError("BulkFile", "The file size is too large. Please use a file size smaller than 1MB");
                }
                else
                {
                    var payload = new BulkUpdateDto
                    {
                        BulkFileType      = viewModel.BulkUpdateType.Value,
                        FileName          = fileName,
                        OverrideCRProcess = viewModel.CanOverrideCRProcess && viewModel.OverrideCRProcess
                    };

                    var state    = UriHelper.SerializeToUrlToken(payload);
                    var response = await _establishmentWriteService.BulkUpdateAsync(payload, User);

                    System.IO.File.Delete(fileName);

                    if (response.HasErrors)
                    {
                        viewModel.Result = new Services.Domain.BulkUpdateProgressModel
                        {
                            Errors = response.Errors
                        };
                    }
                    else
                    {
                        return(RedirectToAction(nameof(Result), new { response.GetResponse().Id, state }));
                    }
                }
            }

            return(View("Index", viewModel));
        }
        public async Task <ActionResult> Result(Guid id, string state)
        {
            var model = await _establishmentWriteService.BulkUpdateAsync_GetProgressAsync(id, User);

            if (!model.IsCompleted())
            {
                return(View("InProgress", model));
            }
            else
            {
                var dto = UriHelper.DeserializeUrlToken <BulkUpdateDto>(state);
                var vm  = new BulkUpdateViewModel
                {
                    BulkUpdateType = dto.BulkFileType,
                    EffectiveDate  = new UI.Models.DateTimeViewModel(dto.EffectiveDate),
                    Result         = model
                };
                vm.CanOverrideCRProcess = User.IsInRole(R.ROLE_BACKOFFICE);
                vm.OverrideCRProcess    = dto.OverrideCRProcess;
                return(View("Index", vm));
            }
        }