< Summary

Class:WinSolutions.Sveta.Server.Services.Implements.MovementRouteService
Assembly:WinSolutions.Sveta.Server
File(s):/opt/dev/sveta_api_build/WinSolutions.Sveta.Server/Services/Implements/MovementRouteService.cs
Covered lines:41
Uncovered lines:10
Coverable lines:51
Total lines:93
Line coverage:80.3% (41 of 51)
Covered branches:9
Total branches:18
Branch coverage:50% (9 of 18)

Metrics

MethodLine coverage Branch coverage
.ctor(...)100%100%
GetRoutes()100%100%
GetRoutes()100%100%
CreateRoute()100%50%
CreateRoutes()100%50%
UpdateRoute()100%50%
DeleteRoute()100%50%
DeleteRoute()100%100%
PrepareQuery()100%100%
GetRoutesByDepartment()0%100%
GetRoute()0%100%

File(s)

/opt/dev/sveta_api_build/WinSolutions.Sveta.Server/Services/Implements/MovementRouteService.cs

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using System.Data;
 4using System.Linq;
 5using System.Reflection;
 6using System.Threading.Tasks;
 7using Microsoft.EntityFrameworkCore;
 8using Microsoft.EntityFrameworkCore.Metadata.Builders;
 9using Microsoft.Extensions.Logging;
 10using WinSolutions.Sveta.Common;
 11using WinSolutions.Sveta.Server.Data.DataModel.Contexts;
 12using WinSolutions.Sveta.Server.Data.DataModel.Entities;
 13using WinSolutions.Sveta.Server.Data.DataModel.Kinds;
 14using WinSolutions.Sveta.Server.Services.Interfaces;
 15
 16namespace WinSolutions.Sveta.Server.Services.Implements
 17{
 18    public class MovementRouteService: SvetaServiceBase, IMovementRouteService
 19    {
 20        private readonly ILogger<MovementRouteService> _logger;
 21        private readonly SvetaDbContext _db;
 22
 23        public MovementRouteService(SvetaDbContext db, ILogger<MovementRouteService> logger, IAuthenticationService auth
 18624            : base(authenticationService)
 18625        {
 18626            _logger = logger;
 18627            _db = db;
 18628        }
 29
 19330        public async Task<List<MovementStatusRoute>> GetRoutes() => await PrepareQuery().ToListAsync();
 31
 28432        public async Task<List<MovementStatusRoute>> GetRoutes(long movementStatusId, long warehouseId) => await Prepare
 28433            .Where(d => d.StatusCurrent.Id == movementStatusId && d.WarehouseId == warehouseId)
 28434            .ToListAsync();
 35
 36        public async Task CreateRoute(MovementStatusRoute statusRoute)
 137        {
 138            await _db.MovementStatusRoutes.AddAsync(statusRoute);
 139            await _db.SaveChangesAsync(CurrentUserId);
 140        }
 41
 42        public async Task CreateRoutes(List<MovementStatusRoute> statusRoutes)
 18643        {
 18644            await _db.MovementStatusRoutes.AddRangeAsync(statusRoutes);
 18645            await _db.SaveChangesAsync(CurrentUserId);
 18646        }
 47
 48        public async Task UpdateRoute(MovementStatusRoute statusRoute)
 149        {
 150            var routeDb = await _db.MovementStatusRoutes.FindAsync(statusRoute.Id)
 151                          ?? throw new ArgumentException($"Запись #{statusRoute.Id} не найдена");
 152            routeDb.Hour = statusRoute.Hour;
 153            await _db.SaveChangesAsync(CurrentUserId);
 154        }
 55
 56        public async Task DeleteRoute(long id)
 157        {
 158            var routeDb = await _db.MovementStatusRoutes.FindAsync(id)
 159                          ?? throw new ArgumentException($"Запись #{id} не найдена");
 160            await DeleteRoute(routeDb);
 161        }
 62
 63        public async Task DeleteRoute(MovementStatusRoute route)
 164        {
 165            route.IsDeleted = true;
 166            await _db.SaveChangesAsync(CurrentUserId);
 167        }
 68
 47769        private IQueryable<MovementStatusRoute> PrepareQuery() => _db.MovementStatusRoutes
 47770            .Include(d => d.RecState)
 47771            .Include(d => d.StatusCurrent)
 47772            .ThenInclude(StatusCurrent => StatusCurrent.StatusOwner)
 47773            .Include(d => d.StatusNext)
 47774                .ThenInclude(StatusNext => StatusNext.StatusOwner)
 47775            .Include(d => d.Warehouse)
 47776            .Where(d => !d.IsDeleted)
 47777            .AsQueryable();
 78
 79        public async Task<List<MovementStatusRoute>> GetRoutesByDepartment(long warehouseId)
 080        {
 081            return await PrepareQuery()
 082                .Where(d => d.WarehouseId == warehouseId)
 083                .ToListAsync();
 084        }
 85
 86        public async Task<MovementStatusRoute> GetRoute(long id)
 087        {
 088            return await PrepareQuery()
 089                .Where(d => d.Id == id)
 090                .FirstOrDefaultAsync();
 091        }
 92    }
 93}