예제 #1
0
        public ActionResult Edit(int id)
        {
            Client client              = clientRepository.Where(c => c.Id == id).Single();
            var    clientViewModel     = new ClientViewModel(client);
            var    clientPageViewModel = new ClientPageViewModel(userManager.GetRoles(User.Identity.GetUserId()), clientViewModel);

            var consultantListToDropDown = _adminRepository.Where(cr => !cr.IsLockedOut && cr.Role.Any(r => r.Name == "consultant")).Select(c => new { Id = c.Id, Name = c.Name }).ToList();

            consultantListToDropDown.Insert(0, new { Id = "", Name = "" });
            clientPageViewModel.Consultant = new SelectList(
                consultantListToDropDown, "Id", "Name");

            var accountManagerListToDropDown = _adminRepository.Where(cr => !cr.IsLockedOut && cr.Role.Any(r => r.Name == "sales")).Select(c => new { Id = c.Id, Name = c.Name }).ToList();

            accountManagerListToDropDown.Insert(0, new { Id = "", Name = "" });
            clientPageViewModel.AccountManager = new SelectList(
                accountManagerListToDropDown, "Id", "Name");

            clientPageViewModel.HasAdminMenu = this.User.IsInRole("sales") || this.User.IsInRole("consultant");
            clientPageViewModel.ClientId     = id;
            clientPageViewModel.ClientName   = client.Name;
            clientPageViewModel.HasWebTab    = client.Labels.Any(l => l.Name == "Webbflik");

            return(View(clientPageViewModel));
        }
예제 #2
0
 public ClientPage()
 {
     InitializeComponent();
     viewModel   = new ClientPageViewModel();
     DataContext = viewModel;
     clientPage  = this;
 }
        public void InvalidModelStateWhenEditingClientDoesntEditClients()
        {
            var clientRepositoryMoq  = new Mock <IRepository <Client> >();
            var consultantRepository = new LocalRepository <InsideUser>();
            var userManager          = new Mock <IIdentityMembershipProvider>();
            var labelRepository      = new LocalRepository <Label>();

            var consultant = new InsideUser()
            {
                Id = "Id1"
            };

            //consultantRepositoryMoq.Setup(m => m.All()).Returns(consultants.AsQueryable);
            consultantRepository.Add(consultant);
            var clientController = new ClientController(clientRepositoryMoq.Object, labelRepository, consultantRepository, userManager.Object);

            var clientToEdit = ModelHelper.TestClient1AllDataNoReferences;

            clientToEdit.ConsultantId    = "Id1";
            clientToEdit.Consultant      = consultant;
            clientToEdit.Consultant.Role = new Collection <InsideRole> {
                ModelHelper.TestConsultantRole
            };
            var clientViewModel       = new ClientViewModel(clientToEdit);
            var clilientPageViewModel = new ClientPageViewModel(new List <string>(), clientViewModel);

            clientController.ModelState.AddModelError("key", "error message");
            var result = clientController.Edit(clilientPageViewModel) as ViewResult;

            //var consultants = result.ViewBag.Consultant as SelectList;

            Assert.AreEqual(1 + 1, clilientPageViewModel.Consultant.Count(), "+1 is for not to count Null consultant");
            clientRepositoryMoq.Verify(r => r.Attach(It.IsAny <Client>()), Times.Never());
        }
예제 #4
0
        public IActionResult GetTableOfClients(int page = 1)
        {
            // 0. Фиксируем количество элементов на странице
            int pageSize = 3;
            // 1. Получаем данные о всех клиентах (коллекцию клиентов) из базы данных
            IQueryable <Client> source = db.Clients;
            // 1.1 Получаем общее количество клиентов
            int count = source.Count();
            // 2. Получаем обрезанную выборку клиентов :
            // Для этого в оргинальной коллекции пропускаем (функция Skip) Page-1  страниц по PageSize клиентов на каждой
            // и из оставшихся берем (функция take) pageSize элементов
            List <Client> items = source.Skip((page - 1) * pageSize).Take(pageSize).ToList();

            // 3. Если так получилось что на последней странице 0 элементов и при этом страниц больше одной
            // такое произойдет, если удалить единственного клиента на последней странице
            if (page > 1 && items.Count == 0)
            {
                // 3.1 Уменьшаем номер страницы на 1
                page--;
                // 3.2 Заново формируем набор клиентов на страницу
                items = source.Skip((page - 1) * pageSize).Take(pageSize).ToList();
            }
            // После того, как выборка клиентов сформирована
            // 4. Создаем PageViewModel
            PageViewModel pageViewModel = new PageViewModel(count, page, pageSize);
            // 5. Создаем CientPageViewModel используя pageViewModel и список
            ClientPageViewModel viewModel = new ClientPageViewModel
            {
                PageViewModel = pageViewModel,
                Clients       = items
            };

            // 6. Возвращаем частичное представление сформированное из viewModel
            return(PartialView(viewModel));
        }
예제 #5
0
        public ActionResult Edit(ClientPageViewModel clientLoggedInViewModel)
        {
            var clientViewModel = clientLoggedInViewModel.ClientViewModel;

            if (ModelState.IsValid)
            {
                var client = new Client()
                {
                    AccountManagerId     = clientViewModel.AccountManagerId,
                    Address              = clientViewModel.Address,
                    CallTrackingMetricId = clientViewModel.CallTrackingMetricId,
                    ConsultantId         = clientViewModel.ConsultantId,
                    AnalyticsTableId     = clientViewModel.AnalyticsTableId,
                    Domain          = clientViewModel.Domain,
                    EmailAddress    = clientViewModel.EmailAddress,
                    Id              = clientViewModel.Id,
                    IsActive        = clientViewModel.IsActive,
                    Latitude        = clientViewModel.Latitude,
                    Longitude       = clientViewModel.Longitude,
                    Name            = clientViewModel.Name,
                    FeeFixedMonthly = clientViewModel.FeeFixedMonthly,
                    FeePercent      = ((decimal)(clientViewModel.FeePercent)) / 100m
                };
                //client.ConsultantId = 1;
                clientRepository.Attach(client);
                clientRepository.SetState(client, EntityState.Modified);
                clientRepository.SaveChanges();
                return(RedirectToAction("Index"));
            }
            var consultantListToDropDown = _adminRepository.Where(cr => !cr.IsLockedOut && cr.Role.Any(r => r.Name == "consultant")).Select(c => new { Id = c.Id, Name = c.Name }).ToList();

            consultantListToDropDown.Insert(0, new { Id = "", Name = "" });
            clientLoggedInViewModel.Consultant = new SelectList(
                consultantListToDropDown, "Id", "Name");

            var accountManagerListToDropDown = _adminRepository.Where(cr => !cr.IsLockedOut && cr.Role.Any(r => r.Name == "sales")).Select(c => new { Id = c.Id, Name = c.Name }).ToList();

            accountManagerListToDropDown.Insert(0, new { Id = "", Name = "" });
            clientLoggedInViewModel.AccountManager = new SelectList(
                accountManagerListToDropDown, "Id", "Name");

            return(View(clientLoggedInViewModel));
        }
        public void EditClientSavesForOkData()
        {
            var clientRepositoryMoq     = new Mock <IRepository <Client> >();
            var consultantRepositoryMoq = new Mock <IRepository <InsideUser> >();
            var userManager             = new Mock <IIdentityMembershipProvider>();
            var labelRepository         = new LocalRepository <Label>();

            var clientController = new ClientController(clientRepositoryMoq.Object, labelRepository, consultantRepositoryMoq.Object, userManager.Object);

            var clientToSave          = ModelHelper.TestClient1AllDataNoReferences;
            var clientViewModel       = new ClientViewModel(clientToSave);
            var clilientPageViewModel = new ClientPageViewModel(new List <string>(), clientViewModel);
            var result = clientController.Edit(clilientPageViewModel);


            Assert.IsTrue(clientController.ViewData.ModelState.Count == 0, "Expected no validation errors.");
            clientRepositoryMoq.Verify(r => r.Attach(It.Is <Client>(c => c.Id == clientToSave.Id)), "Expected client attach");
            clientRepositoryMoq.Verify(r => r.SaveChanges(), "Expected call to save changes");

            Assert.IsInstanceOfType(result, typeof(RedirectToRouteResult), "Expected redirect after save.");
        }
예제 #7
0
 public ClientPage(Client Client)
 {
     DataContext = new ClientPageViewModel(Client);
     InitializeComponent();
 }