Exemplo n.º 1
0
        public async Task <IActionResult> AddRouteAsync([FromBody] AddRouteManagementAc addRoute)
        {
            var user = await _userManager.FindByNameAsync(User.Identity.Name);

            return(Ok(await _routeManagementRepository.AddRouteAsync(addRoute, user)));
        }
Exemplo n.º 2
0
        /// <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"
                        });
                    }
                }
            }
        }