public void RoutesRepository_GetRoutDetailsFeedbackFor_NullLanguage() { // Arrange int wrongOriginCityNodeID = 11; int destinationCityNodeID = 5; var repository = new RoutesRepository(_datacontext); var originCityNode = _datacontext.CityNodes.SingleOrDefault(m => m.CityNodeId == wrongOriginCityNodeID); var destinationCityNode = _datacontext.CityNodes.SingleOrDefault(m => m.CityNodeId == destinationCityNodeID); var routeNode = new RouteNode { RouteNodeId = 1, OriginCityNodeId = 11, DestinationCityNodeId = 5, OriginCityNode = originCityNode, DestinationCityNode = destinationCityNode }; string lang = null; //Act var result = repository.GetRoutDetailsFeedbackFor(routeNode, lang); }
/// <summary> /// Creates the route node. /// </summary> /// <param name="originCityId">The origin city identifier.</param> /// <param name="destinationCityId">The destination city identifier.</param> /// <returns>Return id of added routeNode</returns> public int CreateRouteNode( int originCityId, int destinationCityId ) { var routeNode = new RouteNode { OriginCityNodeId = originCityId, DestinationCityNodeId = destinationCityId }; DataContext.AddDataObject( routeNode ); Save(); return routeNode.RouteNodeId; }
/// <summary> /// Gets the holistic feedback for. /// </summary> /// <param name="node">The node.</param> /// <param name="language"></param> /// <returns> The List of <see cref="HolisticFeedback"/>.</returns> public List<HolisticFeedback> GetHolisticFeedbackFor( RouteNode node, string language ) { var result = new List<HolisticFeedback>(); var languageObject = DataContext.Languages.FirstOrDefault( k => k.Name.ToLower() == language.ToLower() ); int languageId = DataContext.Languages.FirstOrDefault( k => k.IsDefault == true ).LanguageId; if( languageObject != null ) { languageId = languageObject.LanguageId; } var feedbacks = DataContext.Feedbacks.Where( e => e.RouteNodeId == node.RouteNodeId ).ToList(); var destinationCityName = DataContext.MapObjectTranslations.SingleOrDefault( m => m.LanguageKey == node.DestinationCityNode.LanguageKey && m.LanguageId == languageId ); var originCityName = DataContext.MapObjectTranslations.SingleOrDefault( m => m.LanguageKey == node.OriginCityNode.LanguageKey && m.LanguageId == languageId ); foreach( var feedback in feedbacks ) { feedback.User = DataContext.Users.SingleOrDefault( m => m.UserId == feedback.UserId ); var holisticFeedback = new HolisticFeedback { UserId = feedback.UserId, UserName = feedback.User.Name, FeedbackId = feedback.FeedbackId, SubmitTime = feedback.SubmitTime, OriginCityName = originCityName != null ? originCityName.Value : String.Empty, DestinationCityName = destinationCityName != null ? destinationCityName.Value : String.Empty }; var feedbackValue = DataContext.FeedbackValues.FirstOrDefault( f => f.FeedbackId == feedback.FeedbackId ); if( feedbackValue != null ) { holisticFeedback.Value = feedbackValue.Value; var feedbackItem = DataContext.FeedbackItems.FirstOrDefault( f => f.FeedbackItemId == feedbackValue.FeedbackItemId ); if( feedbackItem != null ) { holisticFeedback.FeedbackItem = new FeedbackItemData { DescriptionTranslationKey = feedbackItem.DescriptionTranslationKey, FeedbackItemId = feedbackItem.FeedbackItemId, FeedbackModelId = feedbackItem.FeedbackModelId, IsNumeric = feedbackItem.IsNumeric, NameTranslationKey = feedbackItem.NameTranslationKey, Mandatory = feedbackItem.Mandatory, SortNumber = feedbackItem.SortNumber }; } } result.Add( holisticFeedback ); } return result; }
/// <summary> /// Gets the route details feedbacks. /// </summary> /// <param name="node">The node.</param> /// <param name="language"></param> /// <returns> The List of <see cref="RouteDetailsFeedback"/>.</returns> public List<RouteDetailsFeedback> GetRoutDetailsFeedbackFor( RouteNode node, string language ) { if( node == null ) { throw new ArgumentNullException( "node" ); } if( String.IsNullOrEmpty( language ) ) { throw new ArgumentNullException( "language" ); } var result = new List<RouteDetailsFeedback>(); var languageObject = DataContext.Languages.FirstOrDefault( k => k.Name.ToLower() == language.ToLower() ); int languageId = DataContext.Languages.FirstOrDefault( k => k.IsDefault == true ).LanguageId; if( languageObject != null ) { languageId = languageObject.LanguageId; } var feedbacks = DataContext.Feedbacks.Where( e => e.RouteNodeId == node.RouteNodeId ).ToList(); var destinationCityName = DataContext.MapObjectTranslations.SingleOrDefault( m => m.LanguageKey == node.DestinationCityNode.LanguageKey && m.LanguageId == languageId ); var originCityName = DataContext.MapObjectTranslations.SingleOrDefault( m => m.LanguageKey == node.OriginCityNode.LanguageKey && m.LanguageId == languageId ); foreach( var feedback in feedbacks ) { if( feedback != null ) { var feedbackValues = DataContext.FeedbackValues.Where( m => m.FeedbackId == feedback.FeedbackId ); var feedbackValuesData = ( from value in feedbackValues let feedbackItem = DataContext.FeedbackItems.FirstOrDefault( f => f.FeedbackItemId == value.FeedbackItemId ) where feedbackItem != null select new FeedbackValueData { FeedbackId = value.FeedbackId, FeedbackItem = new FeedbackItemData { DescriptionTranslationKey = feedbackItem.DescriptionTranslationKey, NameTranslationKey = feedbackItem.NameTranslationKey, SortNumber = feedbackItem.SortNumber, FeedbackModelId = feedbackItem.FeedbackModelId, FeedbackItemId = feedbackItem.FeedbackItemId, IsNumeric = feedbackItem.IsNumeric, Mandatory = feedbackItem.Mandatory }, FeedbackItemId = value.FeedbackItemId, FeedbackValueId = value.FeedbackValueId, Value = value.Value } ).ToList(); feedback.User = DataContext.Users.SingleOrDefault( m => m.UserId == feedback.UserId ); if( feedback.User != null ) { var holisticFeedback = new RouteDetailsFeedback { UserName = feedback.User.Name, FeedbackId = feedback.FeedbackId, SubmitTime = feedback.SubmitTime, OriginCityName = originCityName != null ? originCityName.Value : String.Empty, DestinationCityName = destinationCityName != null ? destinationCityName.Value : String.Empty, DestinationCityId = feedback.RouteNode.DestinationCityNodeId, OriginCityId = feedback.RouteNode.OriginCityNodeId, FeedbackValues = feedbackValuesData }; result.Add( holisticFeedback ); } } } return result; }
public void RoutesRepository_GetRoutDetailsFeedbackFor_PosistiveTest(int originCityNodeID, int destinationCityNodeID, string lang, string[] expected) { // Arrange var repository = new RoutesRepository(_datacontext); var originCityNode = _datacontext.CityNodes.SingleOrDefault(m => m.CityNodeId == originCityNodeID); var destinationCityNode = _datacontext.CityNodes.SingleOrDefault(m => m.CityNodeId == destinationCityNodeID); var routeNode = new RouteNode { RouteNodeId = 1, OriginCityNodeId = 11, DestinationCityNodeId = 5, OriginCityNode = originCityNode, DestinationCityNode = destinationCityNode }; //Act var result = repository.GetRoutDetailsFeedbackFor(routeNode, lang); //Assert Assert.IsNotNull(result); Assert.AreEqual(result.Count, expected.Length); Assert.AreEqual(result[0].DestinationCityName, expected[0]); Assert.AreEqual(result[0].OriginCityName, expected[1]); for (int index = 0; index < result.Count; index++) { var resultItem = result[index]; Assert.IsNotNull(resultItem); } }
public void RoutesRepository_GetRoutDetailsFeedbackFor_WronrgOriginCity(int оriginCityNodeID, int destinationCityNodeID, string lang) { // Arrange var repository = new RoutesRepository(_datacontext); var originCityNode = _datacontext.CityNodes.SingleOrDefault(m => m.CityNodeId == оriginCityNodeID); var destinationCityNode = _datacontext.CityNodes.SingleOrDefault(m => m.CityNodeId == destinationCityNodeID); var routeNode = new RouteNode { RouteNodeId = 1, OriginCityNodeId = 11, DestinationCityNodeId = 5, OriginCityNode = originCityNode, DestinationCityNode = destinationCityNode }; //string lang = "en"; //Act var result = repository.GetRoutDetailsFeedbackFor(routeNode, lang); }
/// <summary> /// Gets the estimation for route node. /// </summary> /// <param name="node">The node.</param> /// <returns>The <see cref="RouteNodeEstimation"/> estimation.</returns> private RouteNodeEstimation GetEstimationForRouteNode(RouteNode node) { return new RouteNodeEstimation { RouteNode = new RouteNodeData { DestinationCityNodeId = node.DestinationCityNodeId, OriginCityNodeId = node.OriginCityNodeId, RouteNodeId = node.RouteNodeId }, HolisticFeedbacks = _routeRepository.GetHolisticFeedbackFor(node, null) }; }