Esempio n. 1
0
        public async Task <IActionResult> Registerdriver([FromBody] RegisterDriverViewModel model)
        {
            try
            {
                if (CheckExistdriver(model.PhoneNubmber))
                {
                    return(Ok(new ResultContract <Driver>()
                    {
                        statuse = false, Data = null, message = "این شماره موبایل قبلا ثبت نام کرده است"
                    }));
                }
                else
                {
                    var driver = model.Adapt <Driver>();

                    await _context.Drivers.AddAsync(driver);

                    await _context.SaveChangesWithHistoryAsync(HttpContext);

                    return(Ok(new ResultContract <Driver>()
                    {
                        statuse = true, Data = driver, message = ""
                    }));
                }
            }
            catch (Exception ex)
            {
                await _logger.LogAsync(HttpContext, ex);

                return(Ok(new ResultContract <string>()
                {
                    statuse = false, message = "یک خطای ناشناخته روی داد"
                }));
            }
        }
Esempio n. 2
0
        public ActionResult RegisterDriver(RegisterDriverViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View());
            }
            try
            {
                Driver driver = new Driver(new User.NameFormat
                {
                    FirstName = model.FirstName,
                    LastName  = model.LastName
                }, new User.ContactNumberFormat(model.CountryCode, model.CompanyCode, model.Number), model.CreditLimit, Constants.DEFAULT_LOCATION, model.CNIC);

                driver.RegisterIdentityUser(model.Username, Constants.DEFAULT_PASSWORD);
                RegisterDriverConfirmationViewModel regModel = new RegisterDriverConfirmationViewModel
                {
                    Contact  = driver.ContactNumber.LocalFormatedPhoneNumber,
                    Name     = driver.FullName.FirstName + " " + driver.FullName.LastName,
                    Password = Constants.DEFAULT_PASSWORD,
                    Username = model.Username
                };
                return(View("RegisterationConfirmation", regModel));
            }
            catch (UniqueKeyViolationException ex)
            {
                ModelState.AddModelError(String.Empty, ex.Message);
                return(View());
            }
            catch (Exception ex)
            {
                return(RedirectToAction("ErrorPage", "Error", ex));
            }
        }
Esempio n. 3
0
        public ActionResult BecomeDriver()
        {
            var driverRegisterModel = new RegisterDriverViewModel();

            driverRegisterModel.TruckTypesList = GetTruckTypes();
            driverRegisterModel.TruckYear      = null;
            return(View(driverRegisterModel));
        }
        public void ShouldProperlyCreateNewDriverWhenInitialized()
        {
            var sut = new RegisterDriverViewModel(_driverServiceMock, _driverViewModelMapperMock,
                                                  _messengerServiceMock);

            Assert.NotNull(sut.CurrentDriver);
            Assert.AreNotEqual(Guid.Empty, sut.CurrentDriver.Id);
        }
        public ActionResult RegisterDriver()
        {
            RegisterDriverViewModel viewModel = new RegisterDriverViewModel();

            viewModel.MakesList = new List <string>()
            {
                "Audi", "Mercedes"
            };
            return(PartialView(viewModel));
        }
        public void ShouldNotExecuteRegisterCommandWhenDriverIsNotValid()
        {
            var sut = new RegisterDriverViewModel(_driverServiceMock, _driverViewModelMapperMock,
                                                  _messengerServiceMock);

            sut.RegisterDriverCommand.Execute(null);
            _driverViewModelMapperMock.DidNotReceive().Map(Arg.Any <DriverViewModel>());
            _driverServiceMock.DidNotReceive().CreateDriver(Arg.Any <DriverDTO>());
            _messengerServiceMock.DidNotReceive().Send(Arg.Any <NotificationMessage>());
        }
        public void ShouldExecuteRegisterCommandWhenDriverIsValid()
        {
            var sut = new RegisterDriverViewModel(_driverServiceMock, _driverViewModelMapperMock,
                                                  _messengerServiceMock);

            sut.CurrentDriver.FirstName     = "Valid";
            sut.CurrentDriver.LastName      = "Valid";
            sut.CurrentDriver.LicenseNumber = "Valid";
            sut.RegisterDriverCommand.Execute(null);
            _driverViewModelMapperMock.Received().Map(sut.CurrentDriver);
            _driverServiceMock.Received().CreateDriver(Arg.Any <DriverDTO>());
            _messengerServiceMock.Received()
            .Send(Arg.Is <NotificationMessage>(m => m.Notification == "Close Register Window"));
        }
Esempio n. 8
0
        public async Task <ActionResult> RegisterDriver(RegisterDriverViewModel model)
        {
            //admin abcD123$

            if (ModelState.IsValid)
            {
                var user = new User {
                    UserName = model.Username, Email = model.Email, Fullname = model.Fullname
                };
                var result = await UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    result = await UserManager.AddToRoleAsync(user.Id, "Driver");

                    Driver driver = new Driver()
                    {
                        DrivingLicence = model.DrivingLicence, UserId = user.Id, Status = Status.Availble, TotalRides = 0, Earnings = 0
                    };
                    _driverRepository.Add(driver);


                    Vehicle vehicle = new Vehicle()
                    {
                        DriverId = driver.Id, ModelName = model.VehicleModelName, CompanyName = model.VehicleCompanyName, Color = model.VehicleColor, RegNumber = model.VehicleRegNum, RegDate = model.VehicleRegDate, VehicleTypeId = _vehicleTypeRepository.GetVehicleByName(model.VehicleType).Id
                    };
                    _vehicleRepository.Add(vehicle);

                    await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                    //await _dirverRepo.Add(driver);
                    //await _vehicleRepo.Add(vehicle);

                    // For more information on how to enable account confirmation and password reset please visit https://go.microsoft.com/fwlink/?LinkID=320771
                    // Send an email with this link
                    // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                    // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                    // await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");

                    return(RedirectToAction("Index", "Drivers"));
                }

                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
        public async Task <ActionResult> RegisterDriver(RegisterDriverViewModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var user = new ApplicationUser {
                        UserName = model.Email, Email = model.Email, IsDriver = model.IsDriver
                    };
                    var result = UserManager.Create(user, model.Password);
                    if (result.Succeeded)
                    {
                        var           roleResult    = UserManager.AddToRole(user.Id, "Driver");
                        DriverService driverService = new DriverService();
                        driverService.AddDriver(user.Id, !String.IsNullOrEmpty(model.LicenceRegistrationDate) ? Convert.ToDateTime(model.LicenceRegistrationDate) : DateTime.Now.AddYears(-18), DateTime.Now);
                        await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                        // For more information on how to enable account confirmation and password reset please visit https://go.microsoft.com/fwlink/?LinkID=320771
                        // Send an email with this link
                        string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);

                        var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                        await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");

                        return(RedirectToAction("EmailNotConfirmed", "Account"));
                    }
                    AddErrors(result);
                }
                catch (Exception ex)
                {
                    var t = ex.Message;
                }
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
Esempio n. 10
0
        public ActionResult RegisterDriver(RegisterDriverViewModel model)
        {
            if (ModelState.IsValid)
            {
                //Unqieness validations
                var checkEmailUniqueness = _context.Logins
                                           .SingleOrDefault(l => l.Email == model.Email);

                if (checkEmailUniqueness != null)
                {
                    ModelState.AddModelError("Email", "Email id is already registered.");
                }

                var checkPhoneUnqiueness = _context.TruckOwners
                                           .SingleOrDefault(t => t.Phone == model.Phone);

                if (checkPhoneUnqiueness != null)
                {
                    ModelState.AddModelError("Phone", "Phone number is already registered.");
                }

                var checkTruckUniqueness = _context.Trucks
                                           .SingleOrDefault(t => t.LicensePlate == model.LicensePlate);

                if (checkTruckUniqueness != null)
                {
                    ModelState.AddModelError("LicensePlate", "Truck License Number is already registered.");
                }

                var checkDLNumberUniqueness = _context.TruckOwners
                                              .SingleOrDefault(t => t.DriverLicenseNumber == model.DriverLicenseNumber);

                if (checkDLNumberUniqueness != null)
                {
                    ModelState.AddModelError("DriverLicenseNumber", "Driver License Number is already registered.");
                }

                var checkVRumberUniqueness = _context.TruckOwners
                                             .SingleOrDefault(t => t.VehicleRegNumber == model.VehicleRegNumber);

                if (checkVRumberUniqueness != null)
                {
                    ModelState.AddModelError("VehicleRegNumber", "Vehicle Reg Number is already registered.");
                }

                var checkDIPNumberUniqueness = _context.TruckOwners
                                               .SingleOrDefault(t => t.DriverInsurancePolicy == model.DriverInsurancePolicy);

                if (checkDIPNumberUniqueness != null)
                {
                    ModelState.AddModelError("DriverInsurancePolicy", "Driver Insurance Policy is already registered.");
                }
                //Unqieness validations

                if (checkEmailUniqueness == null && checkPhoneUnqiueness == null && checkTruckUniqueness == null && checkDLNumberUniqueness == null && checkVRumberUniqueness == null && checkDIPNumberUniqueness == null)
                {
                    var salt = AuthenticationLogic.Get_SALT(64);

                    var login = new Login
                    {
                        Email          = model.Email.Trim(),
                        Password       = AuthenticationLogic.Get_HASH_SHA512(model.Password, model.Email, salt),
                        PasswordSalt   = salt,
                        UserType       = "D",
                        EmailActivated = false,
                        CreatedTime    = DateTime.Now,
                        ModifiedTime   = DateTime.Now
                    };
                    _context.Logins.Add(login);

                    var truckOwner = new TruckOwner
                    {
                        FirstName           = model.FirstName.Trim(),
                        LastName            = model.LastName.Trim(),
                        Phone               = model.Phone.Trim(),
                        Email               = model.Email.Trim(),
                        CurrentStatusActive = false,
                        Address1            = model.Address1.Trim(),
                        Address2            = model.Address2,
                        ZipCode             = model.ZipCode.Trim(),
                        City  = model.City.Trim(),
                        State = model.State.Trim(),
                        DriverLicenseNumber   = model.DriverLicenseNumber.Trim(),
                        VehicleRegNumber      = model.VehicleRegNumber.Trim(),
                        DriverInsurancePolicy = model.DriverInsurancePolicy.Trim(),
                        CreatedTime           = DateTime.Now,
                        ModifiedTime          = DateTime.Now
                    };
                    _context.TruckOwners.Add(truckOwner);

                    var truck = new Truck
                    {
                        TruckOwnerId = truckOwner.TruckOwnerId,
                        TruckTypeId  = model.TruckTypeId,
                        TruckMake    = model.TruckMake.Trim(),
                        TruckModel   = model.TruckModel.Trim(),
                        TruckYear    = model.TruckYear.ToString(),
                        LicensePlate = model.LicensePlate.Trim(),
                        TruckColor   = model.TruckColor.Trim(),
                        CreatedTime  = DateTime.Now,
                        ModifiedTime = DateTime.Now
                    };
                    _context.Trucks.Add(truck);
                    _context.SaveChanges();

                    string token           = truckOwner.TruckOwnerId + "c45kaa52165hrd84rd";
                    string verificationUrl = Url.Action("VerifyEmail", "TruckOwners", new { token = token }, Request.Url.Scheme);

                    SendGridEmailService.SendEmailActivationLink("Driver", truckOwner.Email, truckOwner.FirstName, verificationUrl);

                    TempData["ViewModel"] = new SuccessPageViewModel {
                        Message = Constants.RegisterSuccessMessage
                    };
                    return(RedirectToAction("Success", "Home"));
                }
            }
            model.TruckTypesList = GetTruckTypes();
            return(View("../TruckOwners/BecomeDriver", model));
        }