< Summary

Class:WinSolutions.Sveta.Server.Services.Implements.AddressService
Assembly:WinSolutions.Sveta.Server
File(s):/opt/dev/sveta_api_build/WinSolutions.Sveta.Server/Services/Implements/AddressService.cs
Covered lines:11
Uncovered lines:12
Coverable lines:23
Total lines:71
Line coverage:47.8% (11 of 23)
Covered branches:0
Total branches:0

Metrics

MethodLine coverage Branch coverage
.ctor(...)100%100%
GetAddress()0%100%
GetFullAddress()0%100%
GetPhysicAddressByContragent()0%100%
GetActualAddressDepartment()100%100%

File(s)

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

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using System.Linq;
 4using System.Threading.Tasks;
 5using Microsoft.EntityFrameworkCore;
 6using Microsoft.Extensions.Logging;
 7using WinSolutions.Sveta.Server.Data.DataModel.Contexts;
 8using WinSolutions.Sveta.Server.Data.DataModel.Entities;
 9using WinSolutions.Sveta.Server.Services.Interfaces;
 10using WinSolutions.Sveta.Common;
 11using WinSolutions.Sveta.Common.Extensions;
 12
 13namespace WinSolutions.Sveta.Server.Services.Implements
 14{
 15    public class AddressService : SvetaServiceBase, IAddressService
 16    {
 17        private readonly SvetaDbContext _db;
 18        private readonly ILogger<AddressService> _logger;
 19
 20        public AddressService(SvetaDbContext db, ILogger<AddressService> logger, IAuthenticationService authenticationSe
 18521            : base(authenticationService)
 18522        {
 18523            _db = db;
 18524            _logger = logger;
 18525        }
 26
 27        /// <summary>
 28        /// Получает запись адреса по id записи
 29        /// </summary>
 30        /// <param name="id">id адреса</param>
 31        /// <returns>адрес</returns>
 32        public async Task<Address> GetAddress(long id)
 033        {
 034            return await _db.Address.Where(e => !e.IsDeleted).FirstOrDefaultAsync(e=>e.Id == id);
 035        }
 36
 37        /// <summary>
 38        /// Получает запись адреса по полному адресу
 39        /// </summary>
 40        /// <param name="fullAddress">полный адрес</param>
 41        /// <returns>адрес</returns>
 42        public async Task<Address> GetFullAddress(string fullAddress)
 043        {
 044            return await _db.Address.Where(e => !e.IsDeleted).FirstOrDefaultAsync(e => e.FullAddress.Contains(fullAddres
 045        }
 46
 47        /// <summary>
 48        /// Возвращает физический адрес по контрагенту
 49        /// </summary>
 50        /// <param name="contragentId">Идентификатор контрагента</param>
 51        /// <returns></returns>
 052        public async Task<Address> GetPhysicAddressByContragent(long contragentId) => await _db.Contragents
 053            .Include(d => d.PhysicAddress)
 054            .Where(d => !d.IsDeleted)
 055            .Where(d => d.Id == contragentId)
 056            .Select(d => d.PhysicAddress)
 057            .FirstOrDefaultAsync();
 58
 59        /// <summary>
 60        /// Возвращает актуальный адрес по департаменту
 61        /// </summary>
 62        /// <param name="departmentId">Идентификатор контрагента</param>
 63        /// <returns></returns>
 2964        public async Task<Address> GetActualAddressDepartment(long departmentId) => await _db.Departments
 2965            .Include(d => d.ActualAddress)
 2966            .Where(d => !d.IsDeleted)
 2967            .Where(d => d.Id == departmentId)
 2968            .Select(d => d.ActualAddress)
 2969            .FirstOrDefaultAsync();
 70    }
 71}