public async Task <IActionResult> AddRouteAsync([FromBody] AddRouteManagementAc addRoute) { var user = await _userManager.FindByNameAsync(User.Identity.Name); return(Ok(await _routeManagementRepository.AddRouteAsync(addRoute, user))); }
/// <summary> /// Method to add route - SS /// </summary> /// <param name="addRoute">route detail</param> /// <param name="loggedInUser">logged in user</param> /// <returns>response</returns> public async Task <RouteManagementResponse> AddRouteAsync(AddRouteManagementAc addRoute, ApplicationUser loggedInUser) { if (string.IsNullOrEmpty(addRoute.Code.Trim())) { return new RouteManagementResponse() { HasError = true, Message = "Code can't be empty", ErrorType = RouteManagementResponseType.Code } } ; else if (string.IsNullOrEmpty(addRoute.Name.Trim())) { return new RouteManagementResponse() { HasError = true, Message = "Name can't be empty", ErrorType = RouteManagementResponseType.Name } } ; else { var instituteId = await _instituteUserMappingHelperService.GetUserCurrentSelectedInstituteIdAsync(loggedInUser.Id, true); var placeIds = addRoute.RouteStageMappings.Select(x => x.FromPlaceId).ToList(); placeIds.AddRange(addRoute.RouteStageMappings.Select(x => x.ToPlaceId).ToList()); placeIds = placeIds.Distinct().ToList(); var placeCount = await _iMSDbContext.TransportationStages.CountAsync(x => placeIds.Contains(x.Id) && x.InstituteId == instituteId); if (placeIds.Count != placeCount) { return new RouteManagementResponse() { HasError = true, Message = "Place not found", ErrorType = RouteManagementResponseType.PlaceId } } ; else { if (await _iMSDbContext.Routes.AnyAsync(x => x.Code.ToLowerInvariant() == addRoute.Code.ToLowerInvariant())) { return new RouteManagementResponse() { HasError = true, Message = "Code already exist. Please use unique one", ErrorType = RouteManagementResponseType.Code } } ; else { var route = new Route() { Code = addRoute.Code, CreatedOn = DateTime.UtcNow, InstituteId = instituteId, Name = addRoute.Name, StartDate = addRoute.StartDate, UpdatedById = loggedInUser.Id, UpdatedOn = DateTime.UtcNow }; _iMSDbContext.Routes.Add(route); await _iMSDbContext.SaveChangesAsync(); List <RouteStageMapping> routeStages = new List <RouteStageMapping>(); for (int i = 0; i < addRoute.RouteStageMappings.Count; i++) { routeStages.Add(new RouteStageMapping() { CreatedOn = DateTime.UtcNow, Distance = addRoute.RouteStageMappings[i].Distance, FromPlaceId = addRoute.RouteStageMappings[i].FromPlaceId, OrderId = i, RouteId = route.Id, ToPlaceId = addRoute.RouteStageMappings[i].ToPlaceId }); } _iMSDbContext.RouteStageMappings.AddRange(routeStages); await _iMSDbContext.SaveChangesAsync(); return(new RouteManagementResponse() { HasError = false, Message = "Route added successfully" }); } } } }