public async Task <IActionResult> Edit(OrganizationEditViewModel organization)
        {
            if (organization == null)
            {
                return(BadRequest());
            }

            var errors = _organizationValidator.Validate(organization);

            errors.ToList().ForEach(e => ModelState.AddModelError(e.Key, e.Value));

            if (ModelState.IsValid)
            {
                var isNameUnique = await _mediator.SendAsync(new OrganizationNameUniqueQuery { OrganizationName = organization.Name, OrganizationId = organization.Id });

                if (isNameUnique)
                {
                    var id = await _mediator.SendAsync(new EditOrganization { Organization = organization });

                    return(RedirectToAction(nameof(Details), new { id, area = "Admin" }));
                }

                ModelState.AddModelError(nameof(organization.Name), "Organization with same name already exists. Please use different name.");
            }

            return(View("Edit", organization));
        }
        public List <KeyValuePair <string, string> > Validate(OrganizationEditViewModel model)
        {
            var result = new List <KeyValuePair <string, string> >();

            if (string.IsNullOrEmpty(model.PrivacyPolicy) && string.IsNullOrEmpty(model.PrivacyPolicyUrl))
            {
                result.Add(new KeyValuePair <string, string>(nameof(model.PrivacyPolicyUrl), "You must either supply a URL to a privacy policy or supply the privacy policy content."));
            }

            return(result);
        }
        public async Task EditPostReturnsTheCorrectViewAndViewModelWhenModelStateIsInvalid()
        {
            var model = new OrganizationEditViewModel();

            var controller = new OrganizationController(new Mock <IMediator>().Object, SuccessValidator());

            controller.ModelState.AddModelError("foo", "bar");
            var result = (ViewResult)await controller.Edit(model);

            Assert.Equal("Edit", result.ViewName);
            Assert.Same(model, result.ViewData.Model);
        }
        public async Task EditGetReturnsCorrectViewAndViewModel_WhenMediatorReturnsOrganizationEditModel()
        {
            CreateSut();

            var model = new OrganizationEditViewModel();

            _mediator.Setup(x => x.SendAsync(It.Is <OrganizationEditQuery>(y => y.Id == Id))).ReturnsAsync(model);

            var result = (ViewResult)await _sut.Edit(Id);

            Assert.Equal("Edit", result.ViewName);
            Assert.Same(model, result.ViewData.Model);
        }
        public async Task EditPostSendsOrganizationNameUniqueQueryWithCorrectParametersWhenModelStateIsValid()
        {
            var mediator = new Mock <IMediator>();
            var organizationEditModel = new OrganizationEditViewModel {
                Name = "name", Id = 1
            };

            var controller = new OrganizationController(mediator.Object, SuccessValidator());
            await controller.Edit(organizationEditModel);

            mediator.Verify(x => x.SendAsync(It.Is <OrganizationNameUniqueQuery>(y => y.OrganizationName == organizationEditModel.Name && y.OrganizationId == organizationEditModel.Id)),
                            Times.Once());
        }
示例#6
0
        public async Task <JsonResult> Edit(OrganizationEditViewModel model)
        {
            var organization = _mapper.Map <Organization>(model);

            var result = await _unitOfWork.Repository <Organization>().UpdateAsync(organization);

            if (result.IsSuccess)
            {
                return(Json(new { status = 200, message = _localizerService["Success"] }));
            }

            return(Json(new { status = 406, message = _localizerService["Error"] }));
        }
        private async Task UploadOrganizationLogo(OrganizationEditViewModel organization, IFormFile fileUpload)
        {
            var existingImageUrl = organization.LogoUrl;
            var newImageUrl      = await _imageService.UploadOrganizationLogoAsync(organization.Id, fileUpload);

            if (!string.IsNullOrEmpty(newImageUrl))
            {
                organization.LogoUrl = newImageUrl;
                if (existingImageUrl != null && existingImageUrl != newImageUrl)
                {
                    await _imageService.DeleteImageAsync(existingImageUrl);
                }
            }
        }
 public OrganizationControllerTests()
 {
     _organizationEditModel = new OrganizationEditViewModel
     {
         Id      = 0,
         LogoUrl = "http://www.example.com/image.jpg",
         Name    = "Test",
         PrimaryContactFirstName   = "FirstName",
         PrimaryContactLastName    = "LastName",
         PrimaryContactPhoneNumber = "0123456798",
         PrimaryContactEmail       = "*****@*****.**",
         WebUrl = "http://www.example.com"
     };
 }
示例#9
0
 public ActionResult Delete(int id)
 {
     if (id > 0)
     {
         OrganizationEditViewModel vm = _orgService.GetOrganizationById(id);
         if (vm == null)
         {
             SystemMessages.Add(CommonStrings.No_Record, SystemMessageType.Error, true);
             return(RedirectToAction("Index"));
         }
         return(PartialView("_Delete", vm));
     }
     return(RedirectToAction("Index"));
 }
        public async Task EditPostRedirectsToCorrectActionWithCorrectData_WhenModelStateIsValid_AndOrganizationNameIsUnique()
        {
            var model        = new OrganizationEditViewModel();
            var mockMediator = new Mock <IMediator>();

            mockMediator.Setup(y => y.SendAsync(It.IsAny <OrganizationNameUniqueQuery>())).ReturnsAsync(true);
            mockMediator.Setup(x => x.SendAsync(It.Is <EditOrganizationCommand>(y => y.Organization == model))).ReturnsAsync(Id);

            var controller = new OrganizationController(mockMediator.Object, SuccessValidator());
            var result     = (RedirectToActionResult)await controller.Edit(model);

            Assert.Equal("Details", result.ActionName);
            Assert.Equal(AreaNames.Admin, result.RouteValues["area"]);
            Assert.Equal(Id, result.RouteValues["id"]);
        }
示例#11
0
 public ActionResult Edit(OrganizationEditViewModel model)
 {
     try
     {
         InfoFormat("User #{0} going to update Organization #{1}", User.Identity.Name, model.Organization.Id);
         var record = _repository.GetById(model.Organization.Id);
         UpdateModel(record, "Organization");
         _repository.SubmitChanges();
         SetTempOkMessage("Organization {0} was successfully updated", model.Organization.Name);
         return(RedirectToAction("list", new { parent = model.Organization.ParentId == 0 ? model.Organization.Id : model.Organization.ParentId }));
     } catch (Exception ex)
     {
         Error("Error updating Organization!", ex);
         ModelState.AddModelError("", ex.Message);
     }
     return(View(model));
 }
示例#12
0
        public void UpdateOrganization(OrganizationEditViewModel vm)
        {
            Organization model = GetOrganization(vm.Id);

            model.OrgCategoryId    = vm.OrgCategoryId;
            model.GenderId         = vm.GenderId;
            model.OrganizationNo   = vm.OrganizationNo;
            model.OrganizationName = vm.OrganizationName;
            model.IsActive         = vm.IsActive;
            model.MeetingFrequency = vm.MeetingFrequencyId;
            model.MeetingDate      = vm.MeetingDate;
            model.UserId           = _userHelper.Get().UserId;
            model.SetDate          = DateTime.Now;
            model.SystemDate       = _userHelper.Get().DayOpenClose.SystemDate;

            _uow.OrganizationRepository.Update(model);
            _uow.Save();
        }
示例#13
0
        public async Task <ActionResult> Edit([Bind(Include = "Key, Code, Name, Domain")] OrganizationEditViewModel organization)
        {
            if (ModelState.IsValid)
            {
                Organization org = await db.Organizations.FindAsync(organization.Key);

                org.Name   = organization.Name;
                org.Code   = organization.Code;
                org.Domain = organization.Domain;

                db.Entry(org).State = EntityState.Modified;

                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }
            return(View(organization));
        }
示例#14
0
        /// <summary>
        /// Creates an OrganizationEditModel from an existing Organization
        /// </summary>
        /// <param name="organization">An Organization that will be supply the initial values for editing.</param>
        /// <returns>An OrganizationEditModel that can be used to capture the fields for an Organization
        /// and it's location and primary contact built from values from the supplied organization. </returns>
        public static OrganizationEditViewModel ToEditModel_Organization(Organization organization)
        {
            var ret = new OrganizationEditViewModel
            {
                Id            = organization.Id,
                Name          = organization.Name,
                Location      = organization.Location.ToEditModel(),
                LogoUrl       = organization.LogoUrl,
                WebUrl        = organization.WebUrl,
                PrivacyPolicy = organization.PrivacyPolicy
            };

            if (organization.OrganizationContacts?.SingleOrDefault(tc => tc.ContactType == (int)ContactTypes.Primary)?.Contact != null)
            {
                ret = (OrganizationEditViewModel)organization.OrganizationContacts?.SingleOrDefault(tc => tc.ContactType == (int)ContactTypes.Primary)?.Contact.ToEditModel(ret);
            }

            return(ret);
        }
        public async Task EditPostInvokesOrganizationValidatorsValidateMethodWithTheCorrectOrganizationEditModel_WhenModelIsNotNull()
        {
            //Arrange
            var organizationValidatorMock = new Mock <IOrganizationEditModelValidator>();
            var errors = new List <KeyValuePair <string, string> > {
                new KeyValuePair <string, string>("FakeProperty", "FakeError")
            };
            var organizationEditModel = new OrganizationEditViewModel {
                Id = 1, Name = "Test1"
            };

            organizationValidatorMock.Setup(o => o.Validate(organizationEditModel)).Returns(errors);
            var sut = new OrganizationController(null, organizationValidatorMock.Object);

            //Act
            var result = await sut.Edit(organizationEditModel) as ViewResult;

            //Assert
            organizationValidatorMock.Verify(o => o.Validate(organizationEditModel), Times.Once);
        }
示例#16
0
        public ActionResult Edit(int id)
        {
            InfoFormat("User #{0} is going to edit Organization #{1}", User.Identity.Name, id);
            Organization model = _repository.Organizations.SingleOrDefault(x => x.Id == id);

            if (model == null)
            {
                WarnFormat("Non-existing organization #{0}!", id);
                return(RedirectToAction("notfound", "help"));
            }

            OrganizationEditViewModel viewModel = new OrganizationEditViewModel();

            viewModel.Organization = model;
            viewModel.Parent       = _repository.GetById(model.ParentId);
            viewModel.Children     = _repository.GetByParentId(model.Id);
            viewModel.Users        = _repository.GetUsersInOrganization(model.Id);

            return(View(viewModel));
        }
示例#17
0
        public void CreateOrganization(OrganizationEditViewModel vm)
        {
            Organization org = new Organization
            {
                BranchId         = _userHelper.Get().BranchId,
                OrganizationNo   = vm.OrganizationNo,
                OrganizationName = vm.OrganizationName,
                OrgCategoryId    = vm.OrgCategoryId,
                GenderId         = vm.GenderId,
                SetupDate        = _userHelper.Get().DayOpenClose.SystemDate,
                MeetingFrequency = vm.MeetingFrequencyId,
                MeetingDate      = vm.MeetingDate,
                IsActive         = vm.IsActive,
                SystemDate       = _userHelper.Get().DayOpenClose.SystemDate,
                UserId           = _userHelper.Get().UserId,
                SetDate          = DateTime.Now
            };

            _uow.OrganizationRepository.Insert(org);
            _uow.Save();
        }
        public async Task <IActionResult> Edit(OrganizationEditViewModel organization, IFormFile fileUpload)
        {
            if (organization == null)
            {
                return(BadRequest());
            }

            var errors = _organizationValidator.Validate(organization);

            errors.ToList().ForEach(e => ModelState.AddModelError(e.Key, e.Value));

            if (ModelState.IsValid)
            {
                var isNameUnique = await _mediator.SendAsync(new OrganizationNameUniqueQuery { OrganizationName = organization.Name, OrganizationId = organization.Id });

                if (isNameUnique)
                {
                    if (fileUpload != null)
                    {
                        if (fileUpload.IsAcceptableImageContentType())
                        {
                            await UploadOrganizationLogo(organization, fileUpload);
                        }
                        else
                        {
                            ModelState.AddModelError("ImageUrl", "You must upload a valid image file for the logo (.jpg, .png, .gif)");
                            return(View("Edit", organization));
                        }
                    }

                    var id = await _mediator.SendAsync(new EditOrganizationCommand { Organization = organization });

                    return(RedirectToAction(nameof(Details), new { id, area = AreaNames.Admin }));
                }

                ModelState.AddModelError(nameof(organization.Name), "Organization with same name already exists. Please use different name.");
            }

            return(View("Edit", organization));
        }
示例#19
0
        public ActionResult Edit(int?id)
        {
            if (!id.HasValue)
            {
                ViewBag.Title = OrganizationStrings.Organization_Edit_Add_Title;

                ViewBag.OrgCategoryDropDown      = new SelectList(_orgCategoryService.GetOrgCategoryDropDown(), "Value", "Text");
                ViewBag.GenderDropDown           = new SelectList(_genderService.GetGenderDropDown(), "Value", "Text");
                ViewBag.CollectionOptionDropDown = new SelectList(_colcOptionService.GetColcOptionDropDown(), "Value", "Text");

                DateTime systemDate = _userHelper.Get().DayOpenClose.SystemDate;
                return(View(new OrganizationEditViewModel()
                {
                    SetupDate = systemDate,
                    MeetingDate = systemDate,
                    IsActive = true
                }));
            }

            OrganizationEditViewModel vm = _orgService.GetOrganizationById(id.Value);

            if (vm != null)
            {
                ViewBag.Title = OrganizationStrings.Organization_Edit_Update_Title;

                ViewBag.OrgCategoryDropDown      = new SelectList(_orgCategoryService.GetOrgCategoryDropDown(), "Value", "Text", vm.OrgCategoryId);
                ViewBag.GenderDropDown           = new SelectList(_genderService.GetGenderDropDown(), "Value", "Text", vm.GenderId);
                ViewBag.CollectionOptionDropDown = new SelectList(_colcOptionService.GetColcOptionDropDown(), "Value", "Text", vm.MeetingFrequencyId);

                return(View(vm));
            }
            else
            {
                SystemMessages.Add(CommonStrings.No_Record, true, true);
                return(RedirectToAction("Index"));
            }
        }
 public OrganizationEditPage(Organization item = null)
 {
     InitializeComponent();
     BindingContext = new OrganizationEditViewModel(item);
 }