summaryrefslogtreecommitdiff
path: root/slips/src/app/Marina/Task/CatalogTasks.cs
blob: e3c18a2312b794a0cee4aabf3c94eebdd5ccdcc2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
using System.Collections.Generic;
using Marina.Domain.Interfaces;
using Marina.Domain.Repositories;
using Marina.Infrastructure.Container;
using Marina.Presentation.DTO;
using Marina.Task.Mappers;

namespace Marina.Task {
	public class CatalogTasks : ICatalogTasks {
		public CatalogTasks()
			: this(
				Resolve.DependencyFor< ISlipsRepository >( ),
				Resolve.DependencyFor< ISlipsToDisplayDTOMapper >( ),
				Resolve.DependencyFor< IDockRepository >( ),
				Resolve.DependencyFor< IDockToDisplayDTOMapper >( )
				) {}

		public CatalogTasks( ISlipsRepository slipRepository, ISlipsToDisplayDTOMapper slipMapper,
		                     IDockRepository dockRepository, IDockToDisplayDTOMapper dockMapper ) {
			_slips = slipRepository;
			_slipMapper = slipMapper;
			_docks = dockRepository;
			_dockMapper = dockMapper;
		}

		public IEnumerable< SlipDisplayDTO > GetAvailableSlipsForDockBy( long dockId ) {
			IDock dock = _docks.FindBy( dockId );
			foreach ( ISlip slip in _slips.AllAvailableSlipsFor( dock ) ) {
				yield return _slipMapper.MapFrom( slip );
			}
		}

		public DockDisplayDTO GetDockInformationBy( long dockId ) {
			return _dockMapper.MapFrom( _docks.FindBy( dockId ) );
		}

		public IEnumerable< SlipDisplayDTO > GetAllAvailableSlips() {
			foreach ( ISlip availableSlip in _slips.AllAvailableSlips( ) ) {
				yield return _slipMapper.MapFrom( availableSlip );
			}
		}

		public SlipDisplayDTO FindSlipBy( long slipId ) {
			return _slipMapper.MapFrom( _slips.FindBy( slipId ) );
		}

		private readonly ISlipsRepository _slips;
		private readonly ISlipsToDisplayDTOMapper _slipMapper;
		private readonly IDockRepository _docks;
		private readonly IDockToDisplayDTOMapper _dockMapper;
	}
}