public List <RideDto> GetFinishedPassengerRides(string passengerEmail) { List <PassengerDto> passengers = _passengerLogic.GetUnrepondedPassengersByEmail(passengerEmail); List <RideDto> dtoRides = new List <RideDto>(); DateTime hourAfterRide = new DateTime(); hourAfterRide = DateTime.Now; hourAfterRide.AddHours(1); foreach (PassengerDto passenger in passengers) { Ride ride = _rideRepository.GetRideById(passenger.RideId); if (ride != null) { if (DateTime.Compare(ride.RideDateTime, hourAfterRide) < 0) { var user = _userLogic.GetUserByEmail(EmailType.LOGIN, ride.DriverEmail); RideDto dtoRide = _mapper.Map <Ride, RideDto>(ride); dtoRide.DriverFirstName = user.FirstName; dtoRide.DriverLastName = user.LastName; dtoRides.Add(dtoRide); } } } return(dtoRides); }
public void HandleIdleVisitors_VisitorWithoutLocation_ExpectLocationAndMovedToLocation() { ILocationDto locationDto = new RideDto(); Visitor visitor = new Visitor(); Mock <IMediator> mediator = new Mock <IMediator>(); repo.Setup(repo => repo.IdleVisitors()).Returns(new List <Visitor>() { visitor }); Mock <IVisitorLocationStrategy> strategyMock = new Mock <IVisitorLocationStrategy>(); locationTypeStrategyMock.Setup(strategyMock => strategyMock.GetStrategy(It.IsAny <LocationType>())) .Returns(strategyMock.Object); strategyMock.Setup(mock => mock.SetNewLocation(visitor)).Callback <Visitor>((visitor) => { visitor.TargetLocation = locationDto; }); VisitorControl visitorControl = new VisitorControl(mediator.Object, logger, standClient, repo.Object, visitorMovementService.Object, locationTypeStrategyMock.Object); visitorControl.HandleIdleVisitors(); visitorMovementService.Verify(service => service.SetNextStepDistance(It.IsAny <Visitor>()), Times.Once); strategyMock.Verify(strategy => strategy.SetNewLocation(It.IsAny <Visitor>()), Times.Once); mediator.Verify(mediator => mediator.Publish(It.IsAny <VisitorEvent>(), CancellationToken.None), Times.Once); }
public IHttpActionResult AddCommentForARide(CommentDto commentDto) { string hash = Thread.CurrentPrincipal.Identity.Name; LoginModel loginModel = _accessService.GetLoginData(hash, _unitOfWork).Data; User user = _unitOfWork.UserRepository.GetUserByUsername(loginModel.Username, loginModel.Role); Ride ride = _unitOfWork.RideRepository.FilterRidesIncludeAll(r => r.Id == commentDto.RideId).FirstOrDefault(); if (ride != null) { Comment comment; if ((comment = ride.Comments.FirstOrDefault(c => c.UserId == user.Id)) == null) { comment = _iMapper.Map <CommentDto, Comment>(commentDto); comment.UserId = user.Id; comment.Description = (String.IsNullOrWhiteSpace(commentDto.Description)) ? "" : comment.Description; comment.Timestamp = DateTime.Now; ride.Comments.Add(comment); _unitOfWork.Complete(); } else { comment.Description = (String.IsNullOrWhiteSpace(commentDto.Description)) ? "" : commentDto.Description; comment.Timestamp = DateTime.Now; _unitOfWork.CommentRepository.Update(comment); _unitOfWork.Complete(); } RideDto rideDto = _iMapper.Map <Ride, RideDto>(ride); return(Ok(rideDto)); } return(BadRequest()); }
/// <summary> /// 新增騎乘資料 /// </summary> /// <param name="rideDto">rideDto</param> /// <returns>string</returns> public async Task <string> AddRideData(RideDto rideDto) { try { string verifyRideDataResult = this.VerifyRideData(rideDto); if (!string.IsNullOrEmpty(verifyRideDataResult)) { return(verifyRideDataResult); } RideData rideData = this.mapper.Map <RideData>(rideDto); DateTime createDate = DateTime.Now; rideData.CreateDate = createDate; rideData.RideID = Utility.GetSerialID(createDate); bool isSuccess = await this.rideRepository.CreateRideData(rideData); if (!isSuccess) { return("新增騎乘資料失敗."); } return(string.Empty); } catch (Exception ex) { this.logger.LogError($"Add Ride Data Error >>> Data:{JsonConvert.SerializeObject(rideDto)}\n{ex}"); return("新增騎乘資料發生錯誤."); } }
public async Task <List <RideDto> > GetFinishedPassengerRidesAsync(string passengerEmail) { List <PassengerDto> passengers = _passengerLogic.GetUnrepondedPassengersByEmail(passengerEmail); // IEnumerable<Ride> entityRides = _rideRepository.FindRidesByPassenger(_mapper.Map<PassengerDto,Passenger>(passengers)); List <RideDto> dtoRides = new List <RideDto>(); DateTime hourAfterRide = new DateTime(); hourAfterRide = DateTime.Now; hourAfterRide.AddHours(1); foreach (PassengerDto passenger in passengers) { Ride ride = _rideRepository.GetRideById(passenger.RideId); if (ride != null) { if (DateTime.Compare(ride.RideDateTime, hourAfterRide) < 0) { var user = await _userManager.FindByEmailAsync(ride.DriverEmail); RideDto dtoRide = _mapper.Map <Ride, RideDto>(ride); dtoRide.DriverFirstName = user.FirstName; dtoRide.DriverLastName = user.LastName; dtoRides.Add(dtoRide); } } } return(dtoRides); }
public List <RideRequestDto> ConvertRequestsToDto(IEnumerable <RideRequest> entityRequests, bool isDriver) { List <RideRequestDto> dtoRequests = new List <RideRequestDto>(); int count = 0; foreach (var request in entityRequests) { dtoRequests.Add(_mapper.Map <RideRequest, RideRequestDto>(request)); var route = _routeLogic.GetRouteByRequest(request.RideRequestId); dtoRequests[count].Route = route; if (isDriver) { var user = _userLogic.GetUserByEmail(EmailType.LOGIN, request.PassengerEmail); dtoRequests[count].PassengerFirstName = user.FirstName; dtoRequests[count].PassengerLastName = user.LastName; dtoRequests[count].PassengerPhone = user.Phone; } else { var user = _userLogic.GetUserByEmail(EmailType.LOGIN, request.DriverEmail); dtoRequests[count].DriverFirstName = user.FirstName; dtoRequests[count].DriverLastName = user.LastName; dtoRequests[count].RideDateTime = request.RequestedRide.RideDateTime; } AddressDto address = _addressLogic.GetAddressById(request.AddressId); dtoRequests[count].Address = address; RideDto ride = _rideLogic.GetRideById(request.RideId); count++; } return(dtoRequests); }
public AccelerometerReadingsScreenViewModel(MainContext context, RideDto ride) : base(context) { this.ride = ride; AccelerometerChartModel = CreateAccelerometerChartModel(); }
public void HandleIdleVisitors_VisitorInRangeOfLocation_ExpectStrategyCalled() { ILocationDto locationDto = new RideDto(); locationDto.Coordinates = new Coordinate(51.6491433, 5.0454834); Visitor visitor = new Visitor(); visitor.CurrentLocation = new Coordinate(51.6491420, 5.0454830); visitor.TargetLocation = locationDto; visitor.NextStepDistance = 10.0; Mock <IMediator> mediator = new Mock <IMediator>(); repo.Setup(repo => repo.IdleVisitors()).Returns(new List <Visitor>() { visitor }); Mock <IVisitorLocationStrategy> strategyMock = new Mock <IVisitorLocationStrategy>(); locationTypeStrategyMock.Setup(strategyMock => strategyMock.GetStrategy(It.IsAny <LocationType>())) .Returns(strategyMock.Object); visitor.LocationStrategy = strategyMock.Object; VisitorControl visitorControl = new VisitorControl(mediator.Object, logger, standClient, repo.Object, visitorMovementService.Object, locationTypeStrategyMock.Object); visitorControl.HandleIdleVisitors(); visitorMovementService.Verify(service => service.SetNextStepDistance(It.IsAny <Visitor>()), Times.Once); strategyMock.Verify(strategy => strategy.SetNewLocation(It.IsAny <Visitor>()), Times.Never); strategyMock.Verify(strategy => strategy.StartLocationActivity(It.IsAny <Visitor>())); mediator.Verify(mediator => mediator.Publish(It.IsAny <VisitorEvent>(), CancellationToken.None), Times.Never); }
public async Task <IActionResult> Post(RideDataPostData postData) { string memberID = this.HttpContext.Session.GetObject <string>(CommonFlagHelper.CommonFlag.SessionFlag.MemberID); try { RideDto rideDto = new RideDto() { MemberID = memberID, Climb = postData.Climb, Content = postData.Content, CityID = postData.CityID, Distance = postData.Distance, Level = postData.Level, RideTime = postData.RideTime, Title = postData.Title }; ResponseResultDto responseResult = await this.memberService.AddRideData(rideDto); if (responseResult.Ok) { return(Ok(responseResult.Data)); } return(BadRequest(responseResult.Data)); } catch (Exception ex) { this.logger.LogError($"Add Ride Data Error >>> MemberID:{memberID} PostData:{JsonConvert.SerializeObject(postData)}\n{ex}"); return(BadRequest("新增騎乘資料發生錯誤.")); } }
public IActionResult GetSimillarRides(int rideId) { RideDto ride = _rideLogic.GetRideById(rideId); IEnumerable <RideDto> rides = _rideLogic.GetSimilarRides(ride); return(Ok(rides)); }
public IEnumerable <RideDto> GetSimilarRides(RideDto ride) { string driverEmail = ride.DriverEmail; int routeId = ride.RouteId; IEnumerable <Ride> rides = _rideRepository.GetSimmilarRides(driverEmail, routeId, ride.RideId); return(MapToList(rides)); }
public CreateTrailScreenViewModel(MainContext context, RideDto ride) : base(context) { trail = new TrailDto(); Ride = ride; count = 1; displayText = "Tap on the map to set a start point"; MapTapped += MapViewModel_MapTapped; }
/* * public IEnumerable<RideDto> FindRidesByPassenger(PassengerDto passenger) * { * * IEnumerable<Ride> rides = _rideRepository.FindRidesByPassenger(_mapper.Map<PassengerDto,Passenger>(passenger)); * * return MapToList(rides); * }*/ public bool AddRide(RideDto ride, string email) { ride.DriverEmail = email; ride.Requests = new List <RideRequestDto>(); AddRouteIdToRide(ride); return(_rideRepository.AddRide(_mapper.Map <RideDto, Ride>(ride))); }
public async Task <IActionResult> SetRideAsInactive([FromBody] RideDto rideDto) { var userDto = await _userRepository.GetLoggedInUser(User); if (rideDto == null) { return(BadRequest()); } _passengerLogic.RemovePassengerByRide(rideDto.RideId); _rideRequestLogic.DeletedRide(rideDto.RideId); _rideLogic.SetRideAsInactive(rideDto); return(Ok()); }
public void Constructors_ConstructDto_ExpectDto() { RideDto rideDto = new RideDto(Guid.NewGuid(), "name", "status", 13, 1.64, TimeSpan.FromMinutes(11), 55, new Coordinate(5.23, 51.22), LocationType.RIDE); Assert.Equal("name", rideDto.Name); Assert.Equal(LocationType.RIDE, rideDto.LocationType); Assert.Equal(5.23, rideDto.Coordinates.Latitude); Assert.Equal(51.22, rideDto.Coordinates.Longitude); Assert.Equal("status", rideDto.Status); Assert.Equal(13, rideDto.MinimumAge); Assert.Equal(1.64, rideDto.MinimumLength); Assert.Equal(660, rideDto.DurationInSec); }
public void GetLastLocation_HasALocation_ExpectLocation() { RideDto ride = new RideDto(); Mock <IOptions <VisitorSettings> > settingsMock = new Mock <IOptions <VisitorSettings> >(); DateTime start = DateTime.Now; Visitor visitor = new Visitor(start, 1.73, startCoordinate, random); visitor.AddVisitedLocation(ride); Assert.NotEmpty(visitor.VisitedLocations); Assert.Equal(ride, visitor.GetLastLocation()); }
public void AddRide(RideDto ride, string email) { ride.DriverEmail = email; ride.Requests = new List <RideRequestDto>(); AddRouteIdToRide(ride); var entity = _rideRepository.AddRide(_mapper.Map <RideDto, Ride>(ride)); var note = _driverNoteLogic.AddNote(new DriverNoteDto { Text = ride.Note, RideId = entity.RideId }); ride.DriverNoteId = note.DriverNoteId; }
public IActionResult GetSimillarRides(int rideId) { RideDto ride = _rideLogic.GetRideById(rideId); if (ride == null) { return(BadRequest("Invalid parameter")); } IEnumerable <RideDto> rides = _rideLogic.GetSimilarRides(ride); return(Ok(rides)); }
public IHttpActionResult CancelSeats(RideDto rideDto) // Cancel seats from passenger { var rideDB = unitOfWork.Rides.GetSpecificRide(rideDto.RideID); var requestDB = unitOfWork.Requests.SpecificRequest(rideDto.RideID, User.Identity.GetUserId()); // Se periptwsh pou h akyrwsh thesewn afora oles tis theseis tote h "RefrechSeats" epistrefei -->false<-- kai kanei Delete tou Request apo th vash if (!RequestViewModel.RefrechSeats(rideDB, requestDB, rideDto.CancelSeats)) { unitOfWork.Requests.Remove(requestDB); } unitOfWork.Complete(); return(Ok()); }
public RideDto EarlyStartRide(int userID, int veicleID) { RideDto rideDto = new RideDto(); if (!ModelState.IsValid) { return(null); } User user = (from c in context.User where c.User_ID == userID select c).FirstOrDefault(); try { if (user != null) { Ride newRide = new Ride() { User_ID = userID, StartTime = DateTime.Now, FinishTime = null, Status = true, }; rideDto.Ride_ID = newRide.Ride_ID; rideDto.User_ID = newRide.User_ID; rideDto.StartTime = DateTime.Now; rideDto.Status = newRide.Status; Vehicle vehicle = (from c in context.Vehicle where c.Vehicle_ID == veicleID select c).FirstOrDefault(); if (vehicle != null) { vehicle.isReserved = true; } else { return(null); } context.Ride.Add(newRide); context.Vehicle.Add(vehicle); context.SaveChanges(); } } catch (Exception exc) { return(null); } return(rideDto); }
public async Task <bool> Load(int id) { try { ride = await Context.Services.GetRide(id); OnPropertyChanged(); return(true); } catch (ServiceException ex) { Toast.LongAlert(ex.Message); return(false); } }
public void SetNewLocation_GivenVisitorHasFairyTaleAsLatestLocation_ExpectRandomRequested() { Visitor visitor = new Visitor(); RideDto location = new RideDto(); location.LocationType = LocationType.FAIRYTALE; visitor.VisitedLocations.Add(DateTime.Now, location); VisitorRideStrategy strategy = new VisitorRideStrategy(eventProducerMock.Object, rideClientMock.Object); strategy.SetNewLocation(visitor); rideClientMock.Verify(client => client.GetRandomRide(), Times.Once); rideClientMock.Verify(client => client.GetNextLocation(It.IsAny <Guid>(), It.IsAny <List <Guid> >()), Times.Never); }
public async Task <List <RideRequestDto> > ConvertRequestsToDtoAsync(IEnumerable <RideRequest> entityRequests, bool isDriver) { List <RideRequestDto> dtoRequests = new List <RideRequestDto>(); int count = 0; foreach (var request in entityRequests) { dtoRequests.Add(_mapper.Map <RideRequest, RideRequestDto>(request)); if (isDriver) { var user = await _userManager.FindByEmailAsync(request.PassengerEmail); dtoRequests[count].PassengerFirstName = user.FirstName; dtoRequests[count].PassengerLastName = user.LastName; } else { var user = await _userManager.FindByEmailAsync(request.DriverEmail); dtoRequests[count].DriverFirstName = user.FirstName; dtoRequests[count].DriverLastName = user.LastName; } AddressDto address = _addressLogic.GetAddressById(request.AddressId); dtoRequests[count].City = address.City; dtoRequests[count].Street = address.Street; dtoRequests[count].HouseNumber = address.Number; dtoRequests[count].Longtitude = address.Longtitude; dtoRequests[count].Latitude = address.Latitude; RideDto ride = _rideLogic.GetRideById(request.RideId); if (ride != null) { dtoRequests[count].RideDate = ride.RideDateTime; } else { dtoRequests[count].RideDate = new System.DateTime(); } count++; } return(dtoRequests); }
public IHttpActionResult RequestRide(RideRequestModel rideRequestApiMessage) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } string hash = Thread.CurrentPrincipal.Identity.Name; LoginModel loginModel = _accessService.GetLoginData(hash, _unitOfWork).Data; User user = _unitOfWork.UserRepository.GetUserByUsername(loginModel.Username, loginModel.Role); Location newRideLocation = _iMapper.Map <LocationDto, Location>(rideRequestApiMessage.Location); try { _unitOfWork.LocationRepository.Add(newRideLocation); _unitOfWork.Complete(); } catch (DbUpdateConcurrencyException) { return(BadRequest(ModelState)); } Ride newRide = new Ride(); newRide.StartLocationId = newRideLocation.Id; newRide.CarType = (int)Enum.GetValues(typeof(CarType)).Cast <CarType>().FirstOrDefault(ct => ct.ToString() == rideRequestApiMessage.CarType); newRide.CustomerId = user.Id; newRide.Timestamp = DateTime.Now; try { _unitOfWork.RideRepository.Add(newRide); _unitOfWork.Complete(); } catch (DbUpdateConcurrencyException) { return(BadRequest(ModelState)); } RideDto newRideDto = _iMapper.Map <Ride, RideDto>(newRide); return(CreatedAtRoute("DefaultApi", new { controller = "rides", id = newRideDto.Id }, newRideDto)); }
public void WalkToDestination_VisitorStepsIntoLine_ExpectHandledData() { Visitor visitor = new Visitor(); RideDto ride = new RideDto(); ride.Coordinates = new Coordinate(51.64984, 5.04858); visitor.CurrentLocation = new Coordinate(51.64937, 5.04797); visitor.TargetLocation = ride; visitor.NextStepDistance = 1.1; visitor.WalkToDestination(); Assert.True(visitor.CurrentLocation.Latitude < ride.Coordinates.Latitude); Assert.True(visitor.CurrentLocation.Latitude > 51.64937); Assert.True(visitor.CurrentLocation.Longitude < ride.Coordinates.Longitude); Assert.True(visitor.CurrentLocation.Longitude > 5.04797); }
public IHttpActionResult FinishSuccessfulRide(RideDto successfulRideDto) { if (!ModelState.IsValid) { return(BadRequest()); } if (successfulRideDto.Price == 0.0) { return(BadRequest()); } if (successfulRideDto.DestinationLocation == null) { return(BadRequest()); } string hash = Thread.CurrentPrincipal.Identity.Name; LoginModel loginModel = _accessService.GetLoginData(hash, _unitOfWork).Data; User user = _unitOfWork.UserRepository.GetUserByUsername(loginModel.Username, loginModel.Role); Ride rideToUpdate = _unitOfWork.RideRepository.FilterRidesIncludeAll(r => r.Id == successfulRideDto.Id).FirstOrDefault(); if (rideToUpdate != null) { Ride successfulRide = _iMapper.Map <RideDto, Ride>(successfulRideDto); rideToUpdate.RideStatus = (int)RideStatus.SUCCESSFUL; rideToUpdate.Price = successfulRide.Price; rideToUpdate.DestinationLocation = successfulRide.DestinationLocation; Comment comment = successfulRide.Comments.FirstOrDefault(); comment.UserId = user.Id; comment.Description = (String.IsNullOrWhiteSpace(comment.Description)) ? "" : comment.Description; comment.Timestamp = DateTime.Now; rideToUpdate.Comments.Add(comment); _unitOfWork.RideRepository.Update(rideToUpdate); _unitOfWork.Complete(); return(Ok(rideToUpdate)); } return(BadRequest()); }
/// <summary> /// 驗證騎乘資料 /// </summary> /// <param name="memberDto">memberDto</param> /// <param name="isVerifyPassword">isVerifyPassword</param> /// <returns>string</returns> private string VerifyRideData(RideDto rideDto) { if (string.IsNullOrEmpty(rideDto.MemberID)) { return("會員編號無效."); } if (rideDto.RideTime == 0) { return("無騎乘時間."); } if (rideDto.Distance == 0) { return("無騎乘距離."); } if (rideDto.Climb == 0) { return("無爬升高度."); } if (rideDto.CityID == (int)CityType.None) { return("未設定騎乘市區."); } if (rideDto.Level == (int)RideLevelType.None) { return("未設定騎乘等級."); } if (string.IsNullOrEmpty(rideDto.Title)) { rideDto.Title = $"{DateTime.Now:yyyy/MM/dd}"; } if (string.IsNullOrEmpty(rideDto.Content)) { return("未輸入分享內容."); } return(string.Empty); }
public IHttpActionResult CancelRideRequest(CancelRideRequestModel cancelRideRequestApiMessage) { string hash = Thread.CurrentPrincipal.Identity.Name; LoginModel loginModel = _accessService.GetLoginData(hash, _unitOfWork).Data; User user = _unitOfWork.UserRepository.GetUserByUsername(loginModel.Username, loginModel.Role); Ride oldRide = _unitOfWork.RideRepository.FilterRidesIncludeAll(r => r.CustomerId == user.Id && r.RideStatus == (int)RideStatus.CREATED).FirstOrDefault(); if (oldRide != null) { oldRide.RideStatus = (int)RideStatus.CANCELLED; _unitOfWork.RideRepository.Update(oldRide); _unitOfWork.Complete(); RideDto oldRideDto = _iMapper.Map <Ride, RideDto>(oldRide); return(Ok(oldRideDto)); } return(BadRequest()); }
/// <summary> /// 取得騎乘資料 /// </summary> /// <param name="rideDto">rideDto</param> /// <returns>Tuple(RideDto, string)</returns> public async Task <Tuple <RideDto, string> > GetRideData(RideDto rideDto) { try { if (string.IsNullOrEmpty(rideDto.RideID)) { return(Tuple.Create <RideDto, string>(null, "騎乘編號無效.")); } RideData rideData = await this.rideRepository.GetRideData(rideDto.RideID); return(Tuple.Create(this.mapper.Map <RideDto>(rideData), string.Empty)); } catch (Exception ex) { this.logger.LogError($"Get Ride Data Error >>> RideID:{rideDto.RideID}\n{ex}"); return(Tuple.Create <RideDto, string>(null, "取得騎乘資料發生錯誤.")); } }
public async Task <IActionResult> Post(RideDto rideDto) { try { Tuple <RideDto, string> result = await this.memberService.GetRideData(rideDto); if (string.IsNullOrEmpty(result.Item2)) { return(Ok(result.Item1)); } return(BadRequest(result.Item2)); } catch (Exception ex) { this.logger.LogError($"Get Ride Data Error >>> RideID:{rideDto.RideID}\n{ex}"); return(BadRequest("取得騎乘資料發生錯誤.")); } }