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

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

            var pop3Services = await _externalServiceManager.GetExternalServicesData(new ExternalServicesDataQuery()
            {
                Type   = new[] { Pop3Service.Pop3ExternalServiceType, ImapService.ImapExternalServiceType },
                UserId = _userManager.GetUserId(User)
            });

            var vm = new ReceivedEmailViewModel()
            {
                ExternalServices = new SelectList(pop3Services, nameof(ExternalServiceData.Id),
                                                  nameof(ExternalServiceData.Name), result.Data.ExternalServiceId),
            };

            SetValues(result.Data, vm);

            return(View(vm));
        }
        private void SetValues(RecipeTrigger from, ReceivedEmailViewModel to)
        {
            to.RecipeId          = from.RecipeId;
            to.ExternalServiceId = from.ExternalServiceId;
            var fromData = from.Get <ReceivedEmailTriggerParameters>();

            to.Body            = fromData.Body;
            to.Subject         = fromData.Subject;
            to.FromEmail       = fromData.FromEmail;
            to.BodyComparer    = fromData.BodyComparer;
            to.SubjectComparer = fromData.SubjectComparer;
        }
        public async Task <IActionResult> EditData(string identifier, ReceivedEmailViewModel data)
        {
            var result = await GetRecipeTrigger(identifier);

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

            if (!string.IsNullOrEmpty(data.Body) && data.BodyComparer == ReceivedEmailTriggerParameters.FieldComparer.None)
            {
                ModelState.AddModelError(nameof(ReceivedEmailViewModel.BodyComparer), "Please choose a Body filter type");
            }
            if (!string.IsNullOrEmpty(data.Subject) && data.SubjectComparer == ReceivedEmailTriggerParameters.FieldComparer.None)
            {
                ModelState.AddModelError(nameof(ReceivedEmailViewModel.SubjectComparer), "Please choose a Subject filter type");
            }

            if (!ModelState.IsValid)
            {
                var pop3Services = await _externalServiceManager.GetExternalServicesData(new ExternalServicesDataQuery()
                {
                    Type   = new[] { Pop3Service.Pop3ExternalServiceType, ImapService.ImapExternalServiceType },
                    UserId = _userManager.GetUserId(User)
                });


                data.ExternalServices = new SelectList(pop3Services, nameof(ExternalServiceData.Id),
                                                       nameof(ExternalServiceData.Name), data.ExternalServiceId);
                return(View(data));
            }

            var recipeTrigger = result.Data;

            SetValues(data, recipeTrigger);

            await _recipeManager.AddOrUpdateRecipeTrigger(recipeTrigger);

            return(RedirectToAction("EditRecipe", "Recipes", new
            {
                id = recipeTrigger.RecipeId,
                statusMessage = "Received Email trigger Updated"
            }));
        }
示例#4
0
        protected override async Task <(RecipeTrigger ToSave, ReceivedEmailViewModel showViewModel)> BuildModel(
            ReceivedEmailViewModel viewModel, RecipeTrigger mainModel)
        {
            if (!string.IsNullOrEmpty(viewModel.Body) &&
                viewModel.BodyComparer == ReceivedEmailTriggerParameters.FieldComparer.None)
            {
                ModelState.AddModelError(nameof(ReceivedEmailViewModel.BodyComparer),
                                         "Please choose a Body filter type");
            }

            if (!string.IsNullOrEmpty(viewModel.Subject) &&
                viewModel.SubjectComparer == ReceivedEmailTriggerParameters.FieldComparer.None)
            {
                ModelState.AddModelError(nameof(ReceivedEmailViewModel.SubjectComparer),
                                         "Please choose a Subject filter type");
            }

            if (!ModelState.IsValid)
            {
                var pop3Services = await _externalServiceManager.GetExternalServicesData(new ExternalServicesDataQuery()
                {
                    Type   = new[] { Pop3Service.Pop3ExternalServiceType, ImapService.ImapExternalServiceType },
                    UserId = GetUserId()
                });


                viewModel.ExternalServices = new SelectList(pop3Services, nameof(ExternalServiceData.Id),
                                                            nameof(ExternalServiceData.Name), viewModel.ExternalServiceId);
                return(null, viewModel);
            }

            var recipeTrigger = mainModel;

            recipeTrigger.ExternalServiceId = viewModel.ExternalServiceId;
            recipeTrigger.Set((ReceivedEmailTriggerParameters)viewModel);
            return(recipeTrigger, null);
        }
 private void SetValues(ReceivedEmailViewModel from, RecipeTrigger to)
 {
     to.ExternalServiceId = from.ExternalServiceId;
     to.RecipeId          = from.RecipeId;
     to.Set((ReceivedEmailTriggerParameters)from);
 }