public async Task <FEUser> Create(FEUser newUser)
        {
            if (appDbContext.Users.FirstOrDefault(user => user.Email.ToLowerInvariant() == newUser.Email.ToLowerInvariant()) != null)
            {
                throw new InvalidOperationException(ErrorMessages.EmailTaken);
            }

            User userToAdd = new User {
                FullName    = newUser.FullName,
                PhoneNumber = newUser.PhoneNumber,
                Email       = newUser.Email,
                Password    = newUser.Password != null?PasswordCrypt.EncryptPassword(newUser.Password) : throw new InvalidOperationException(ErrorMessages.PasswordMissing),
                                        SlackId    = newUser.SlackId,
                                        MainOffice = newUser.MainOffice,
                                        IsDriver   = false,
                                        RoleId     = newUser.RoleId,
                                        Cars       = new List <Car>()
            };

            if (newUser.CarPlates != null && newUser.CarPlates.Length != 0)
            {
                UpdateCarPlates(ref userToAdd, newUser.CarPlates);
            }

            appDbContext.Users.Add(userToAdd);
            await appDbContext.SaveChangesAsync();

            newUser.Id = userToAdd.UserId;

            return(newUser);
        }
Exemple #2
0
 public Account(string un, string fn, string ln, string e, string p, string g, DateTime dob)
 {
     this.username  = un;
     this.firstname = fn;
     this.lastname  = ln;
     this.email     = e;
     this.password  = crypt.EncryptPassword(p);
     this.gender    = g;
     this.dob       = dob;
 }
 private User CreateUser(UserRegisterRequest userRegisterRequest)
 {
     return(new User
     {
         Email = userRegisterRequest.Email,
         Password = PasswordCrypt.EncryptPassword(userRegisterRequest.Password),
         FullName = userRegisterRequest.FullName,
         SlackId = userRegisterRequest.SlackId,
         MainOffice = userRegisterRequest.MainOffice,
         IsDriver = true,
         RoleId = 1,
         PhoneNumber = userRegisterRequest.Phone,
         Cars = new List <Car>()
     });
 }
Exemple #4
0
        public async Task <IActionResult> Update(UserUpdateRequest userUpdateRequest)
        {
            User user = appDbContext.Users.Include(x => x.Cars).FirstOrDefault(x => x.UserId == currentUserId);

            if (userUpdateRequest.OldPassword != null && userUpdateRequest.NewPassword != null)
            {
                try
                {
                    checkOldPassword(user, userUpdateRequest.OldPassword);
                    user.Password = PasswordCrypt.EncryptPassword(userUpdateRequest.NewPassword);
                }
                catch (ArgumentException exception)
                {
                    return(BadRequest(new Dictionary <string, string[]>
                    {
                        { exception.ParamName, new [] { exception.Message.Split(Environment.NewLine)[0] } }
                    }));
                }
            }

            user.FullName    = userUpdateRequest.FullName;
            user.PhoneNumber = userUpdateRequest.PhoneNumber;
            user.SlackId     = userUpdateRequest.SlackId;
            user.MainOffice  = userUpdateRequest.MainOffice;
            user.IsDriver    = userUpdateRequest.IsDriver;

            foreach (Car car in user.Cars.ToList())
            {
                if (userUpdateRequest.CarPlates.FirstOrDefault(plate => plate == car.CarPlate) == null)
                {
                    if (appDbContext.Trips.FirstOrDefault(trip => trip.CarPlate == car.CarPlate) != null)
                    {
                        throw new ArgumentException(ErrorMessages.CarPlateHasTrips + car.CarPlate + "!", "carPlates");
                    }
                    user.Cars.Remove(car);
                    appDbContext.Entry(car).State = EntityState.Deleted;
                    appDbContext.Cars.Remove(car);
                }
            }

            foreach (string carPlate in userUpdateRequest.CarPlates)
            {
                Car existingCar = appDbContext.Cars.FirstOrDefault(car => car.CarPlate == carPlate);
                if (existingCar == null)
                {
                    Car carToAdd = new Car()
                    {
                        CarPlate = carPlate, UserId = user.UserId
                    };
                    appDbContext.Cars.Add(carToAdd);
                    user.Cars.Add(carToAdd);
                }
                else if (existingCar.UserId != currentUserId)
                {
                    throw new ArgumentException(ErrorMessages.CarPlateExists + carPlate + "!", "carPlates");
                }
            }

            appDbContext.Entry(user).State = EntityState.Modified;
            appDbContext.Update(user);
            await appDbContext.SaveChangesAsync();

            return(Ok());
        }