public async Task <IActionResult> EditData(string identifier)
        {
            var result = await GetExternalServiceData(identifier);

            if (result.Error != null)
            {
                return(result.Error);
            }

            var pop3Service = new Pop3Service(result.Data);

            return(View(pop3Service.GetData()));
        }
        protected override async Task <(ExternalServiceData ToSave, Pop3ExternalServiceData showViewModel)> BuildModel(Pop3ExternalServiceData viewModel, ExternalServiceData mainModel)
        {
            if (!ModelState.IsValid)
            {
                return(null, viewModel);
            }
            mainModel.Set(viewModel);

            var imapService    = new Pop3Service(mainModel);
            var testConnection = await imapService.CreateClientAndConnect();

            if (testConnection == null)
            {
                ModelState.AddModelError(string.Empty, "Could not connect successfully");

                return(null, viewModel);
            }

            testConnection.Dispose();
            return(mainModel, null);
        }
        public async Task <IActionResult> EditData(string identifier, Pop3ExternalServiceData data)
        {
            var result = await GetExternalServiceData(identifier);

            if (result.Error != null)
            {
                return(result.Error);
            }

            var externalServiceData = result.Data;

            if (!ModelState.IsValid)
            {
                return(View(data));
            }

            externalServiceData.Set(data);

            var pop3Service    = new Pop3Service(externalServiceData);
            var testConnection = await pop3Service.CreateClientAndConnect();

            if (testConnection == null)
            {
                ModelState.AddModelError(string.Empty, "Could not connect successfully");

                return(View(data));
            }

            testConnection.Dispose();


            await _externalServiceManager.AddOrUpdateExternalServiceData(externalServiceData);

            return(RedirectToAction("EditExternalService", "ExternalServices", new
            {
                id = externalServiceData.Id,
                statusMessage = "Pop3 Data updated"
            }));
        }