Exemplo n.º 1
0
        public async Task <IActionResult> Create(EmployeeCreateInputModel employeeCreate)
        {
            if (!this.ModelState.IsValid)
            {
                var errorModel = AutoMapper.Mapper.Map <EmployeeCreateViewModel>(employeeCreate);

                var roles = await this.rolesService.GetAllWithoutAdministratorAsync().Select(x => new SelectListItem {
                    Value = x.Name, Text = x.Name
                }).ToListAsync();

                errorModel.RoleList = roles;

                return(this.View(errorModel));
            }

            string pictureFileName = employeeCreate.PhoneNumber + "_" + DateTime.UtcNow.ToString("dd.MM.yyyy");

            string pictureUrl = null;

            if (employeeCreate.PictureLink != null)
            {
                pictureUrl = await this.cloudinaryService.UploadPictureAsync(
                    employeeCreate.PictureLink,
                    pictureFileName);
            }

            var result = await this.employeesService.CreateAsync(employeeCreate, pictureUrl);

            return(this.RedirectToAction(nameof(this.Index)));
        }
Exemplo n.º 2
0
        public async Task CreateAsyncReturnsCorrect()
        {
            var id   = Guid.NewGuid().ToString();
            var user = new CarpetUser
            {
                Id          = id,
                FirstName   = "Иван",
                LastName    = "Иванов",
                PhoneNumber = "0888777444",
                Email       = "*****@*****.**",
                UserName    = "******",
            };
            var roleAdminId = Guid.NewGuid().ToString();
            var role        = new CarpetRole {
                Id = roleAdminId, Name = GlobalConstants.AdministratorRoleName
            };
            var roleOperatorId = Guid.NewGuid().ToString();
            var roleOperator   = new CarpetRole {
                Id = roleOperatorId, Name = GlobalConstants.OperatorRoleName
            };

            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(databaseName: "CreateAsyncReturnsCorrect")
                          .Options;
            var dbContext = new ApplicationDbContext(options);

            dbContext.Users.Add(user);
            dbContext.Roles.Add(role);
            dbContext.Roles.Add(roleOperator);
            await dbContext.SaveChangesAsync();

            var repository = new EfDeletableEntityRepository <Employee>(dbContext);
            var service    = new EmployeesService(repository, dbContext);

            var userFrom = dbContext.Users.First();

            var employeeId = Guid.NewGuid().ToString();

            var employee = new EmployeeCreateInputModel
            {
                Id          = id,
                FirstName   = "Иван",
                LastName    = "Иванов",
                PhoneNumber = "0888777444",
                Salary      = 1000m,
                RoleName    = GlobalConstants.OperatorRoleName,
            };

            var employeeFromDbFirst = await service.CreateAsync(employee, string.Empty);

            await service.DeleteByIdAsync(employeeFromDbFirst.Id);

            var employeeFromDb = await service.CreateAsync(employee, string.Empty);

            Assert.NotEqual(employeeFromDb.Id, employeeFromDbFirst.Id);
            Assert.Equal(employeeFromDb.PhoneNumber, employeeFromDbFirst.PhoneNumber);
            Assert.Equal(employeeFromDb.PhoneNumber, employeeFromDbFirst.PhoneNumber);
            Assert.Equal(employee.PhoneNumber, employeeFromDb.PhoneNumber);
        }
Exemplo n.º 3
0
        public async Task DeleteByIdAsyncWithWrongIdReturnsError()
        {
            var id   = Guid.NewGuid().ToString();
            var user = new CarpetUser
            {
                Id          = id,
                FirstName   = "Иван",
                LastName    = "Иванов",
                PhoneNumber = "0888777444",
                Email       = "*****@*****.**",
                UserName    = "******",
            };
            var roleAdminId = Guid.NewGuid().ToString();
            var role        = new CarpetRole {
                Id = roleAdminId, Name = GlobalConstants.AdministratorRoleName
            };
            var roleOperatorId = Guid.NewGuid().ToString();
            var roleOperator   = new CarpetRole {
                Id = roleOperatorId, Name = GlobalConstants.OperatorRoleName
            };

            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(databaseName: "DeleteByIdAsyncWithWrongIdReturnsError")
                          .Options;
            var dbContext = new ApplicationDbContext(options);

            dbContext.Users.Add(user);
            dbContext.Roles.Add(role);
            dbContext.Roles.Add(roleOperator);
            await dbContext.SaveChangesAsync();

            var repository = new EfDeletableEntityRepository <Employee>(dbContext);
            var service    = new EmployeesService(repository, dbContext);

            var wrongId = Guid.NewGuid().ToString();

            var employee = new EmployeeCreateInputModel
            {
                Id          = id,
                FirstName   = "Иван",
                LastName    = "Иванов",
                PhoneNumber = "0888777444",
                Salary      = 1000m,
                RoleName    = GlobalConstants.OperatorRoleName,
            };

            var employeeDelete = new EmployeeDeleteInputModel
            {
                Id = wrongId,
            };

            var result = await service.CreateAsync(employee, string.Empty);

            var exception = await Assert.ThrowsAsync <NullReferenceException>(() => service.DeleteByIdAsync(employeeDelete.Id));

            Assert.Equal(string.Format(string.Format(EmployeeConstants.NullReferenceId, wrongId)), exception.Message);
        }
Exemplo n.º 4
0
        public async Task GetByUsernameAsyncReturnsCorrect()
        {
            var id   = Guid.NewGuid().ToString();
            var user = new CarpetUser
            {
                Id          = id,
                FirstName   = "Иван",
                LastName    = "Иванов",
                PhoneNumber = "0888777444",
                Email       = "*****@*****.**",
                UserName    = "******",
            };
            var roleAdminId = Guid.NewGuid().ToString();
            var role        = new CarpetRole {
                Id = roleAdminId, Name = GlobalConstants.AdministratorRoleName
            };
            var roleOperatorId = Guid.NewGuid().ToString();
            var roleOperator   = new CarpetRole {
                Id = roleOperatorId, Name = GlobalConstants.OperatorRoleName
            };

            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(databaseName: "GetByUsernameAsyncReturnsCorrect")
                          .Options;
            var dbContext = new ApplicationDbContext(options);

            dbContext.Users.Add(user);
            dbContext.Roles.Add(role);
            dbContext.Roles.Add(roleOperator);
            await dbContext.SaveChangesAsync();

            var repository = new EfDeletableEntityRepository <Employee>(dbContext);
            var service    = new EmployeesService(repository, dbContext);

            var employee = new EmployeeCreateInputModel
            {
                Id          = id,
                FirstName   = "Иван",
                LastName    = "Иванов",
                PhoneNumber = "0888777444",
                Salary      = 1000m,
                RoleName    = GlobalConstants.OperatorRoleName,
            };

            var result = await service.CreateAsync(employee, string.Empty);

            var username = await dbContext.Employees.FirstOrDefaultAsync(x => x.Id == result.Id);

            var actual = await service.GetIdByUserNameAsync(username.User.UserName);

            var employees = await service.GetAllAsync <EmployeeIndexViewModel>().ToListAsync();

            Assert.Equal(result.Id, actual);
            Assert.Single(employees);
        }
        public async Task <IActionResult> Create(EmployeeCreateInputModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            User user = model.To <User>();
            await userManager.CreateAsync(user, model.Password);

            await userManager.AddToRoleAsync(user, Roles.Employee);

            return(RedirectToAction(nameof(All)));
        }
Exemplo n.º 6
0
        public IActionResult Create(int companyId)
        {
            if (this.ModelState.IsValid == false)
            {
                return(this.View());
            }

            var officesCurrent = this.officesService.GetAllByCompanyId <OfficeDropDownViewModel>(companyId);

            var viewModel = new EmployeeCreateInputModel
            {
                CompanyId       = companyId,
                OfficesDropDown = officesCurrent,
            };

            return(this.View(viewModel));
        }
Exemplo n.º 7
0
        public async Task <EmployeeCreateViewModel> CreateAsync(EmployeeCreateInputModel employeeFromView, string pictureUrl)
        {
            var checkForId = await this.employeeRepository.All().FirstOrDefaultAsync(x => x.PhoneNumber == employeeFromView.PhoneNumber);

            // If customer with phone number exists return existing view model
            if (checkForId != null)
            {
                throw new ArgumentException(string.Format(EmployeeConstants.ArgumentExceptionPhoneNumberExist, employeeFromView.PhoneNumber));
            }

            var user = await this.context.Users.FirstOrDefaultAsync(x => x.Id == employeeFromView.Id);

            if (user == null)
            {
                throw new NullReferenceException(string.Format(EmployeeConstants.NullReferenceUserId, employeeFromView.Id));
            }

            var role = await this.context.Roles.Where(x => x.Name != GlobalConstants.AdministratorRoleName).FirstOrDefaultAsync(x => x.Name == employeeFromView.RoleName);

            if (role == null)
            {
                throw new ArgumentNullException(string.Format(EmployeeConstants.ArgumentExceptionRoleNotExist, employeeFromView.RoleName), new Exception(nameof(employeeFromView.RoleName)));
            }

            user.Roles.Add(new IdentityUserRole <string> {
                RoleId = role.Id, UserId = user.Id
            });

            var employeeToDb = employeeFromView.To <Employee>();

            employeeToDb.Id      = Guid.NewGuid().ToString();
            employeeToDb.User    = user;
            employeeToDb.Picture = pictureUrl;

            await this.employeeRepository.AddAsync(employeeToDb);

            await this.employeeRepository.SaveChangesAsync();

            return(employeeToDb.To <EmployeeCreateViewModel>());
        }
Exemplo n.º 8
0
        public async Task <IActionResult> Create(EmployeeCreateInputModel input)
        {
            if (this.ModelState.IsValid == false)
            {
                return(this.View());
            }

            var employeeId = await this.employeesService.CreateAsync(input.FirstName, input.LastName, input.Salary, input.VacationDays, input.ExpirenceLevel, input.CompanyId);

            if (input.Offices != null)
            {
                for (int i = 0; i < input.Offices.Count; i++)
                {
                    await this.employeeOfficeServices.CreateAsync(employeeId, input.Offices[i]);
                }
            }

            var companyCurrent = this.companiesService.GetById <CompanyViewModel>(input.CompanyId);

            this.TempData["InfoMessage"] = "Employee successfully created!";
            return(this.RedirectToRoute("TaskDotNetCompany", new { name = companyCurrent.Name }));
        }