Exemple #1
0
        private static void ShowResult(RescueAppResult rescueResult)
        {
            foreach (var wniosek in rescueResult.Applications)
            {
                Console.WriteLine($"Application '{wniosek.ApplicationNumber}' -> isOk = '{wniosek.IsOk}' | msg = '{wniosek.Message}");
            }

            Console.WriteLine($"\nEnded at '{DateTime.Now}' - {rescueResult.Message} -> elapsed '{rescueResult.Elapsed} for '{rescueResult.Applications.Count}' -> correct '{rescueResult.Applications.Where(x => x.IsOk == true).Count()}'. Details:\n");
        }
Exemple #2
0
        public RescueAppResult StartMoving(int appCount)
        {
            RescueAppResult result = new RescueAppResult();

            string source      = _mainFs;
            string destination = _newFs;

            try
            {
                _log.Debug($"Starting moving for '{appCount}' apps...");
                Stopwatch watch = Stopwatch.StartNew();

                // get applications for moving
                IEnumerable <ApplicationInfo> applicationsForMoving = _applicationRepository.GetApplicationsForMoving(appCount);

                decimal totalMegabytesMoved        = 0;
                int     processedApplication       = 1;
                int     applicationsForMovingCount = applicationsForMoving?.Count() ?? 0;

                _log.Debug($"'{applicationsForMovingCount}' for moving");

                foreach (ApplicationInfo application in applicationsForMoving)
                {
                    string appNumber = application.AppNumber;

                    try
                    {
                        _log.Debug($"{processedApplication}/{applicationsForMovingCount} - Start '{appNumber}'");

                        Duplex <bool, decimal?> destinationFsResult = _fsService.CheckOnFs(appNumber, destination);

                        if (destinationFsResult.Item1 == true)
                        {
                            // exists on destination FS
                            _log.Error($"'{appNumber}' exists on destination FS -> '{destination}'");

                            application.MoveStatus  = "ERR";
                            application.MoveMessage = "Exists on destination FS";

                            _applicationRepository.UpdateMoveInfo(application);

                            result.Applications.Add(new WniosekResult {
                                ExistedOnOldFS = true, Message = application.MoveMessage, ApplicationNumber = appNumber
                            });
                        }
                        else
                        {
                            // local copy of directory
                            //_fsService.CopyDirectory(appNumber, source, _localAppDir);

                            // move from source FS to destination FS
                            _fsService.MoveDirectory(appNumber, source, destination);

                            // check size on destination FS after moving
                            destinationFsResult = _fsService.CheckOnFs(appNumber, destination);

                            decimal megabytesMoved = destinationFsResult.Item2 ?? 0;
                            application.IsMoved    = true;
                            application.MoveStatus = "DONE";
                            application.MovedMb    = megabytesMoved;
                            totalMegabytesMoved   += megabytesMoved;
                            _applicationRepository.UpdateMoveInfo(application);

                            result.Applications.Add(new WniosekResult {
                                IsOk = true, Message = "OK", ApplicationNumber = appNumber
                            });
                        }

                        _log.Debug($"End for '{appNumber}'");
                    }
                    catch (Exception ex)
                    {
                        string logErrorMsg = PrepareErrorMsg(ex, appNumber);

                        _log.Error(logErrorMsg);
                        application.MoveStatus  = "ERR";
                        application.MoveMessage = logErrorMsg;

                        _applicationRepository.UpdateMoveInfo(application);

                        result.Applications.Add(new WniosekResult {
                            Message = ex.GetBaseException().Message, ApplicationNumber = appNumber
                        });

                        _notifyService.AddError(ex.GetBaseException().Message, ex.GetBaseException().StackTrace,
                                                $"{nameof(StartMoving)} Exception for appNumber = '{appNumber}': {logErrorMsg}");
                    }

                    processedApplication++;
                }

                TimeSpan elapsed = watch.Elapsed;
                string   logMsg  = $"Moving ended for '{applicationsForMovingCount}' applications - correct '{result.Applications.Where(x => x.IsOk == true).Count()}' - elapsed '{elapsed}' - moved {totalMegabytesMoved} MB";
                _log.Debug(logMsg);

                result.IsOk    = true;
                result.Message = $"Ended successfully - moved {totalMegabytesMoved} MB!";
                result.Elapsed = elapsed;

                _notifyService.AddError(result.Message, logMsg, logMsg);
            }
            catch (Exception ex)
            {
                _log.Error($"Global Ex occured: {ex.GetBaseException()}");
                result.Message = ex.GetBaseException().ToString();
                _notifyService.AddError(ex.GetBaseException().Message, ex.GetBaseException().StackTrace,
                                        $"{nameof(StartMoving)} Exception for source = '{source}' and destination = '{destination}'");
            }

            return(result);
        }
Exemple #3
0
        public RescueAppResult StartCopying()
        {
            RescueAppResult result = new RescueAppResult();

            try
            {
                _log.Debug("Starting copying...");
                Stopwatch watch = Stopwatch.StartNew();

                // get applications for copying
                IEnumerable <ApplicationInfo> applicationsForCopy = _applicationRepository.GetApplicationsForCopy();

                _log.Debug($"'{applicationsForCopy?.Count()}' applications for copy");

                foreach (ApplicationInfo application in applicationsForCopy)
                {
                    string appNumber = application.AppNumber;

                    try
                    {
                        var oldFsResult = _fsService.CheckOnFs(appNumber, _oldFS);

                        if (oldFsResult.Item1 == false)
                        {
                            // doesn't exist on old FS
                            _log.Error($"'{appNumber}' doesn't exist on old FS -> '{_oldFS}'");

                            application.MoveStatus  = "ERR";
                            application.MoveMessage = "Doesn't exist on old FS";

                            _applicationRepository.UpdateMoveInfo(application);

                            result.Applications.Add(new WniosekResult {
                                ExistedOnOldFS = false, Message = application.MoveMessage, ApplicationNumber = appNumber
                            });
                        }
                        else
                        {
                            // local copy of directory
                            _fsService.CopyDirectory(appNumber, _oldFS, _localAppDir);

                            //application.IsMoved = true;
                            //application.MoveStatus = "DONE";
                            //_applicationRepository.UpdateMoveInfo(application);

                            result.Applications.Add(new WniosekResult {
                                IsOk = true, Message = "OK", ApplicationNumber = appNumber
                            });
                        }

                        _log.Debug($"End for '{appNumber}'");
                    }
                    catch (Exception ex)
                    {
                        _log.Error($"Ex for '{appNumber}': {ex.GetBaseException()}");
                        application.MoveStatus  = "ERR";
                        application.MoveMessage = ex.GetBaseException().Message;

                        _applicationRepository.UpdateMoveInfo(application);

                        result.Applications.Add(new WniosekResult {
                            Message = ex.GetBaseException().Message, ApplicationNumber = appNumber
                        });
                    }
                }

                var elapsed = watch.Elapsed;
                _log.Debug($"Copying ended for '{applicationsForCopy.Count()}' applications - correct '{result.Applications.Where(x => x.IsOk == true).Count()}' - elapsed '{elapsed}'");

                result.IsOk    = true;
                result.Message = "Ended successfully!";
                result.Elapsed = elapsed;
            }
            catch (Exception ex)
            {
                _log.Error($"Global Ex occured: {ex.GetBaseException()}");
                result.Message = ex.GetBaseException().ToString();
                _notifyService.AddError(ex.GetBaseException().Message, ex.GetBaseException().StackTrace, $"{nameof(StartMoving)} Exception");
            }

            return(result);
        }