Exemplo n.º 1
0
        public async Task <IActionResult> Edit(string id, EmployeeEditInputModel employeeEdit)
        {
            if (!this.ModelState.IsValid)
            {
                var errorModel = AutoMapper.Mapper.Map <EmployeeEditViewModel>(employeeEdit);

                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 = employeeEdit.PhoneNumber + "_" + DateTime.UtcNow.ToString("dd.MM.yyyy");
            string pictureUrl      = null;

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

            var result = await this.employeesService.EditByIdAsync(id, employeeEdit, pictureUrl);

            return(this.RedirectToAction(nameof(this.Index)));
        }
Exemplo n.º 2
0
        public ActionResult Edit(int id, EmployeeEditInputModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var employee = this.employeesService.GetEmployeeById(id);

            if (employee == null)
            {
                return(HttpNotFound());
            }

            if (employee.Position > CompanyRoleType.TeamLeader)
            {
                this.employeesService.UpdateEmployee(id, model.Phone, model.Salary, model.Email, model.Workplace, model.Position);
            }
            else
            {
                this.employeesService.UpdateEmployee(id, model.Phone, model.Salary, model.Email, model.Workplace, null);
            }

            return(RedirectToAction(Constants.Index));
        }
        public async Task <IActionResult> Edit(EmployeeEditInputModel model)
        {
            User user = await userManager.FindByIdAsync(model.Id);

            user.Email          = model.Email;
            user.UserName       = model.Username;
            user.Address        = model.Address;
            user.Name           = model.Name;
            user.Surname        = model.Surname;
            user.PhoneNumber    = model.PhoneNumber;
            user.PersonalNumber = model.PersonalNumber;

            await userManager.UpdateAsync(user);

            return(RedirectToAction(nameof(Details), new { model.Id }));
        }
Exemplo n.º 4
0
        public async Task <IActionResult> Edit(EmployeeEditInputModel inputModel)
        {
            if (!this.ModelState.IsValid)
            {
                this.ViewData["Message"] = NotBeenSaved;
                return(this.Edit(inputModel.Id));
            }

            inputModel.ModifiedFrom = this.userManager.GetUserAsync(this.User).Result.FullName;

            var userId = await this.userService.Update(inputModel);

            var messageContent = SuccessfullyUpdated;

            return(this.RedirectToAction("Details", "Employees", new { id = userId, message = messageContent }));
        }
Exemplo n.º 5
0
        public async Task <EmployeeEditViewModel> EditByIdAsync(string id, EmployeeEditInputModel employeeFromView, string pictureUrl)
        {
            var employeeFromDb = await this.employeeRepository.All().FirstOrDefaultAsync(x => x.Id == employeeFromView.Id);

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

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

            if (user == null)
            {
                throw new ArgumentNullException(string.Format(EmployeeConstants.ArgumentExceptionPhoneNumberNotExist, employeeFromView.PhoneNumber), new Exception(nameof(employeeFromView.PhoneNumber)));
            }

            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)));
            }

            if (employeeFromDb.RoleName != GlobalConstants.AdministratorRoleName)
            {
                user.Roles.Clear();
            }

            user.Roles.Add(new IdentityUserRole <string> {
                RoleId = role.Id, UserId = user.Id
            });
            employeeFromDb.User        = user;
            employeeFromDb.FirstName   = employeeFromView.FirstName;
            employeeFromDb.LastName    = employeeFromView.LastName;
            employeeFromDb.PhoneNumber = employeeFromView.PhoneNumber;
            employeeFromDb.RoleName    = employeeFromView.RoleName;
            employeeFromDb.Salary      = employeeFromView.Salary;
            employeeFromDb.Picture     = pictureUrl;

            this.employeeRepository.Update(employeeFromDb);

            await this.employeeRepository.SaveChangesAsync();

            return(employeeFromDb.To <EmployeeEditViewModel>());
        }
Exemplo n.º 6
0
        public async Task <IActionResult> Edit(EmployeeEditInputModel input)
        {
            if (this.ModelState.IsValid == false)
            {
                return(this.View(input));
            }

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

            await this.employeesService.Edit(input.Id, input.FirstName, input.LastName, input.Salary, input.VacationDays, (int)input.ExpirenceLevel);

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

            this.TempData["InfoMessage"] = "Employee successfully edited!";
            return(this.RedirectToRoute("TaskDotNetCompany", new { name = companyNameCurrent }));
        }
Exemplo n.º 7
0
        public async Task <string> Update(EmployeeEditInputModel inputModel)
        {
            var userId = inputModel.Id;

            var user = this.applicationUserRepository.All().FirstOrDefault(x => x.Id == userId);

            if (user != null)
            {
                user.FullName     = inputModel.FullName;
                user.Position     = inputModel.Position;
                user.TeamId       = inputModel.TeamId;
                user.AddressId    = inputModel.AddressId;
                user.SectionId    = inputModel.SectionId;
                user.CompanyId    = inputModel.CompanyId;
                user.ManagerId    = inputModel.ManagerId;
                user.ModifiedFrom = inputModel.ModifiedFrom;

                this.applicationUserRepository.Update(user);
                await this.applicationUserRepository.SaveChangesAsync();
            }

            return(user?.Id);
        }
Exemplo n.º 8
0
        public async Task EditByIdAsyncReturnsCorrect()
        {
            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: "EditByIdAsyncReturnsCorrect")
                          .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 result = await service.CreateAsync(employee, string.Empty);

            var employeeEdit = new EmployeeEditInputModel
            {
                Id          = result.Id,
                FirstName   = "Edit",
                LastName    = "Иванов",
                PhoneNumber = "0888777444",
                Salary      = 1000m,
                RoleName    = GlobalConstants.OperatorRoleName,
            };

            var actual = await service.EditByIdAsync(result.Id, employeeEdit, string.Empty);

            Assert.Equal(actual.FirstName, employeeEdit.FirstName);
        }
Exemplo n.º 9
0
        public async Task EditByIdAsyncWithWrongRoleReturnsError()
        {
            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: "EditByIdAsyncWithWrongRoleReturnsError")
                          .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 result = await service.CreateAsync(employee, string.Empty);

            var employeeEdit = new EmployeeEditInputModel
            {
                Id          = result.Id,
                FirstName   = "Иван",
                LastName    = "Иванов",
                PhoneNumber = "0888777444",
                Salary      = 1000m,
                RoleName    = "Wrong",
            };

            var exception = await Assert.ThrowsAsync <ArgumentNullException>(() => service.EditByIdAsync(result.Id, employeeEdit, string.Empty));

            Assert.Equal(string.Format(EmployeeConstants.ArgumentExceptionRoleNotExist, employeeEdit.RoleName), exception.Message);
        }