diff options
| author | Roy Ben-Shabat <Roy@Twine-s.com> | 2019-08-08 15:50:21 +0300 |
|---|---|---|
| committer | Roy Ben-Shabat <Roy@Twine-s.com> | 2019-08-08 15:50:21 +0300 |
| commit | 9240614f1bc024801789054092a961c6193695fb (patch) | |
| tree | b4373828029ff9ea12251bc572d36ab519bf40ed /Software/Visual_Studio_v2 | |
| parent | 97411eb2550c6b483181b823da12f127cf903170 (diff) | |
| download | Tango-9240614f1bc024801789054092a961c6193695fb.tar.gz Tango-9240614f1bc024801789054092a961c6193695fb.zip | |
v2 Working on unit of work.
Diffstat (limited to 'Software/Visual_Studio_v2')
18 files changed, 410 insertions, 61 deletions
diff --git a/Software/Visual_Studio_v2/Tango.BLL/MapperBase.cs b/Software/Visual_Studio_v2/Tango.BLL/MapperBase.cs new file mode 100644 index 000000000..3bbefc24c --- /dev/null +++ b/Software/Visual_Studio_v2/Tango.BLL/MapperBase.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Tango.BLL +{ + public abstract class MapperBase<T1, T2> : IMapper<T1,T2> where T1 : class where T2 : class + { + public abstract void Map(T1 source, T2 target); + public abstract void Map(T2 source, T1 target); + + public virtual T2 Create(T1 source) + { + T2 target = Activator.CreateInstance<T2>(); + Map(source, target); + return target; + } + + public virtual T1 Create(T2 source) + { + T1 target = Activator.CreateInstance<T1>(); + Map(source, target); + return target; + } + } +} diff --git a/Software/Visual_Studio_v2/Tango.BLL/Mappers/AddressToAddressModelMapper.cs b/Software/Visual_Studio_v2/Tango.BLL/Mappers/AddressToAddressModelMapper.cs index 0811a3c73..6625cef8b 100644 --- a/Software/Visual_Studio_v2/Tango.BLL/Mappers/AddressToAddressModelMapper.cs +++ b/Software/Visual_Studio_v2/Tango.BLL/Mappers/AddressToAddressModelMapper.cs @@ -6,9 +6,9 @@ using Tango.DAL.Models; namespace Tango.BLL.Mappers { - public class AddressToAddressModelMapper : IMapper<Address, AddressModel> + public class AddressToAddressModelMapper : MapperBase<Address, AddressModel> { - public void Map(Address source, AddressModel target) + public override void Map(Address source, AddressModel target) { target.AddressString = source.AddressString; target.City = source.City; @@ -18,7 +18,7 @@ namespace Tango.BLL.Mappers target.State = source.State; } - public void Map(AddressModel source, Address target) + public override void Map(AddressModel source, Address target) { target.AddressString = source.AddressString; target.City = source.City; @@ -27,19 +27,5 @@ namespace Tango.BLL.Mappers target.PostalCode = source.PostalCode; target.State = source.State; } - - public AddressModel Create(Address source) - { - var model = new AddressModel(); - Map(source, model); - return model; - } - - public Address Create(AddressModel source) - { - Address address = new Address(); - Map(source, address); - return address; - } } } diff --git a/Software/Visual_Studio_v2/Tango.BLL/Mappers/ContactToContactModelMapper.cs b/Software/Visual_Studio_v2/Tango.BLL/Mappers/ContactToContactModelMapper.cs index caf1b70de..a7691b3b3 100644 --- a/Software/Visual_Studio_v2/Tango.BLL/Mappers/ContactToContactModelMapper.cs +++ b/Software/Visual_Studio_v2/Tango.BLL/Mappers/ContactToContactModelMapper.cs @@ -6,9 +6,9 @@ using Tango.DAL.Models; namespace Tango.BLL.Mappers { - public class ContactToContactModelMapper : IMapper<Contact,ContactModel> + public class ContactToContactModelMapper : MapperBase<Contact,ContactModel> { - public void Map(Contact source, ContactModel target) + public override void Map(Contact source, ContactModel target) { target.Email = source.Email; target.Fax = source.Fax; @@ -18,7 +18,7 @@ namespace Tango.BLL.Mappers target.PhoneNumber = source.PhoneNumber; } - public void Map(ContactModel source, Contact target) + public override void Map(ContactModel source, Contact target) { target.Email = source.Email; target.Fax = source.Fax; @@ -26,19 +26,5 @@ namespace Tango.BLL.Mappers target.LastName = source.LastName; target.PhoneNumber = source.PhoneNumber; } - - public ContactModel Create(Contact source) - { - ContactModel model = new ContactModel(); - Map(source, model); - return model; - } - - public Contact Create(ContactModel source) - { - Contact contact = new Contact(); - Map(source, contact); - return contact; - } } } diff --git a/Software/Visual_Studio_v2/Tango.BLL/Mappers/MachineConfigurationToMachineConfigurationModelMapper.cs b/Software/Visual_Studio_v2/Tango.BLL/Mappers/MachineConfigurationToMachineConfigurationModelMapper.cs new file mode 100644 index 000000000..b2d3aaddb --- /dev/null +++ b/Software/Visual_Studio_v2/Tango.BLL/Mappers/MachineConfigurationToMachineConfigurationModelMapper.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Tango.BLL.Objects; +using Tango.DAL.Models; + +namespace Tango.BLL.Mappers +{ + public class MachineConfigurationToMachineConfigurationModelMapper : MapperBase<MachineConfiguration,MachineConfigurationModel> + { + public override void Map(MachineConfiguration source, MachineConfigurationModel target) + { + + } + + public override void Map(MachineConfigurationModel source, MachineConfiguration target) + { + + } + } +} diff --git a/Software/Visual_Studio_v2/Tango.BLL/Mappers/MachineSettingsToMachineSettingsModelMapper.cs b/Software/Visual_Studio_v2/Tango.BLL/Mappers/MachineSettingsToMachineSettingsModelMapper.cs new file mode 100644 index 000000000..29a05da88 --- /dev/null +++ b/Software/Visual_Studio_v2/Tango.BLL/Mappers/MachineSettingsToMachineSettingsModelMapper.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Tango.BLL.Objects; +using Tango.DAL.Models; + +namespace Tango.BLL.Mappers +{ + public class MachineSettingsToMachineSettingsModelMapper : MapperBase<MachineSettings, MachineSettingsModel> + { + public override void Map(MachineSettings source, MachineSettingsModel target) + { + target.AutoCheckForUpdates = source.AutoCheckForUpdates; + target.AutoLogin = source.AutoLogin; + target.IsDemo = source.IsDemo; + target.OSKey = source.OSKey; + target.PerformSchemaUpdateOnVersionUpdate = source.PerformSchemaUpdateOnVersionUpdate; + target.SetupActivation = source.SetupActivation; + target.SetupFirmware = source.SetupFirmware; + target.SetupRemoteAssistance = source.SetupRemoteAssistance; + target.SetupUWF = source.SetupUWF; + target.SuspendVersionUpdate = source.SuspendVersionUpdate; + } + + public override void Map(MachineSettingsModel source, MachineSettings target) + { + target.AutoCheckForUpdates = source.AutoCheckForUpdates; + target.AutoLogin = source.AutoLogin; + target.IsDemo = source.IsDemo; + target.OSKey = source.OSKey; + target.PerformSchemaUpdateOnVersionUpdate = source.PerformSchemaUpdateOnVersionUpdate; + target.SetupActivation = source.SetupActivation; + target.SetupFirmware = source.SetupFirmware; + target.SetupRemoteAssistance = source.SetupRemoteAssistance; + target.SetupUWF = source.SetupUWF; + target.SuspendVersionUpdate = source.SuspendVersionUpdate; + } + } +} diff --git a/Software/Visual_Studio_v2/Tango.BLL/Mappers/MachineToMachineEntityMapper.cs b/Software/Visual_Studio_v2/Tango.BLL/Mappers/MachineToMachineEntityMapper.cs new file mode 100644 index 000000000..c527b5943 --- /dev/null +++ b/Software/Visual_Studio_v2/Tango.BLL/Mappers/MachineToMachineEntityMapper.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Tango.BLL.Objects; +using Tango.DAL.Entities; + +namespace Tango.BLL.Mappers +{ + public class MachineToMachineEntityMapper : MapperBase<Machine, MachineEntity> + { + public override void Map(Machine source, MachineEntity target) + { + target.ID = source.ID; + target.LastUpdated = source.LastUpdated; + target.MachineVersionID = source.MachineVersionID; + target.OrganizationID = source.OrganizationID; + target.ProductionDate = source.ProductionDate; + target.SerialNumber = source.SerialNumber; + new MachineConfigurationToMachineConfigurationModelMapper().Map(target.Configuration, source.Configuration); + new MachineSettingsToMachineSettingsModelMapper().Map(target.Settings, source.Settings); + } + + public override void Map(MachineEntity source, Machine target) + { + target.ID = source.ID; + target.LastUpdated = source.LastUpdated; + target.MachineVersionID = source.MachineVersionID; + target.OrganizationID = source.OrganizationID; + target.ProductionDate = source.ProductionDate; + target.SerialNumber = source.SerialNumber; + new MachineConfigurationToMachineConfigurationModelMapper().Map(target.Configuration, source.Configuration); + new MachineSettingsToMachineSettingsModelMapper().Map(target.Settings, source.Settings); + } + } +} diff --git a/Software/Visual_Studio_v2/Tango.BLL/Mappers/OrganizationToOrganizationEntityMapper.cs b/Software/Visual_Studio_v2/Tango.BLL/Mappers/OrganizationToOrganizationEntityMapper.cs index 0d6079f1f..98d20580e 100644 --- a/Software/Visual_Studio_v2/Tango.BLL/Mappers/OrganizationToOrganizationEntityMapper.cs +++ b/Software/Visual_Studio_v2/Tango.BLL/Mappers/OrganizationToOrganizationEntityMapper.cs @@ -6,9 +6,9 @@ using Tango.DAL.Entities; namespace Tango.BLL.Mappers { - public class OrganizationToOrganizationEntityMapper : IMapper<Organization, OrganizationEntity> + public class OrganizationToOrganizationEntityMapper : MapperBase<Organization, OrganizationEntity> { - public void Map(Organization source, OrganizationEntity target) + public override void Map(Organization source, OrganizationEntity target) { target.ID = source.ID; target.Name = source.Name; @@ -16,26 +16,12 @@ namespace Tango.BLL.Mappers new ContactToContactModelMapper().Map(source.Contact, target.Contact); } - public void Map(OrganizationEntity source, Organization target) + public override void Map(OrganizationEntity source, Organization target) { target.ID = source.ID; target.Name = source.Name; new AddressToAddressModelMapper().Map(source.Address, target.Address); new ContactToContactModelMapper().Map(source.Contact, target.Contact); } - - public OrganizationEntity Create(Organization source) - { - OrganizationEntity entity = new OrganizationEntity(); - Map(source, entity); - return entity; - } - - public Organization Create(OrganizationEntity source) - { - Organization organization = new Organization(); - Map(source, organization); - return organization; - } } } diff --git a/Software/Visual_Studio_v2/Tango.BLL/Objects/Machine.cs b/Software/Visual_Studio_v2/Tango.BLL/Objects/Machine.cs new file mode 100644 index 000000000..067d6aeb4 --- /dev/null +++ b/Software/Visual_Studio_v2/Tango.BLL/Objects/Machine.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Tango.BLL.Objects +{ + public class Machine : ObjectBase + { + public string ID { get; set; } + + public DateTime LastUpdated { get; set; } + + public string SerialNumber { get; set; } + + public DateTime ProductionDate { get; set; } + + public string OrganizationID { get; set; } + + public string MachineVersionID { get; set; } + + public MachineConfiguration Configuration { get; set; } + + public MachineSettings Settings { get; set; } + + public Machine() + { + Configuration = new MachineConfiguration(); + Settings = new MachineSettings(); + } + } +} diff --git a/Software/Visual_Studio_v2/Tango.BLL/Objects/MachineConfiguration.cs b/Software/Visual_Studio_v2/Tango.BLL/Objects/MachineConfiguration.cs new file mode 100644 index 000000000..f0b01a913 --- /dev/null +++ b/Software/Visual_Studio_v2/Tango.BLL/Objects/MachineConfiguration.cs @@ -0,0 +1,10 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Tango.BLL.Objects +{ + public class MachineConfiguration + { + } +} diff --git a/Software/Visual_Studio_v2/Tango.BLL/Objects/MachineSettings.cs b/Software/Visual_Studio_v2/Tango.BLL/Objects/MachineSettings.cs new file mode 100644 index 000000000..c230b7199 --- /dev/null +++ b/Software/Visual_Studio_v2/Tango.BLL/Objects/MachineSettings.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Tango.BLL.Objects +{ + public class MachineSettings + { + public string OSKey { get; set; } + + public bool AutoLogin { get; set; } + + public bool AutoCheckForUpdates { get; set; } + + public bool SetupActivation { get; set; } + + public bool SetupRemoteAssistance { get; set; } + + public bool SetupUWF { get; set; } + + public bool SetupFirmware { get; set; } + + public bool IsDemo { get; set; } + + public bool SuspendVersionUpdate { get; set; } + + public bool PerformSchemaUpdateOnVersionUpdate { get; set; } + } +} diff --git a/Software/Visual_Studio_v2/Tango.BLL/Services/MachinesService.cs b/Software/Visual_Studio_v2/Tango.BLL/Services/MachinesService.cs new file mode 100644 index 000000000..41e81ab2d --- /dev/null +++ b/Software/Visual_Studio_v2/Tango.BLL/Services/MachinesService.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using Tango.BLL.Mappers; +using Tango.BLL.Objects; +using Tango.DAL; +using Tango.DAL.Entities; +using System.Linq; + +namespace Tango.BLL.Services +{ + public class MachinesService : ServiceBase<Machine> + { + private IRepository<MachineEntity> _repository; + private MachineToMachineEntityMapper _mapper; + + public MachinesService(IRepository<MachineEntity> repository) + { + _repository = repository; + _mapper = new MachineToMachineEntityMapper(); + } + + public async Task<Machine> AddMachine(Machine machine) + { + MachineEntity entity = _mapper.Create(machine); + entity = await _repository.Insert(entity); + _mapper.Map(entity, machine); + return machine; + } + + public async Task<List<Machine>> GetOrganizationMachines(string organizationID) + { + return (await _repository.GetAsync(x => x.OrganizationID == organizationID)). + ToList() + .Select(x => _mapper.Create(x)).ToList(); + } + } +} diff --git a/Software/Visual_Studio_v2/Tango.BLL/Services/OrganizationsService.cs b/Software/Visual_Studio_v2/Tango.BLL/Services/OrganizationsService.cs index a502849e3..676496832 100644 --- a/Software/Visual_Studio_v2/Tango.BLL/Services/OrganizationsService.cs +++ b/Software/Visual_Studio_v2/Tango.BLL/Services/OrganizationsService.cs @@ -12,34 +12,45 @@ namespace Tango.BLL.Services { public class OrganizationsService : ServiceBase<Organization> { - private IRepository<OrganizationEntity> _repository; + private IRepository<OrganizationEntity> _organizationsRepository; + private IRepository<MachineEntity> _machinesRepository; private OrganizationToOrganizationEntityMapper _mapper; - public OrganizationsService(IRepository<OrganizationEntity> repository) + public OrganizationsService(IRepository<OrganizationEntity> organizationsRepository, IRepository<MachineEntity> machinesRepository) { - _repository = repository; + _organizationsRepository = organizationsRepository; + _machinesRepository = machinesRepository; _mapper = new OrganizationToOrganizationEntityMapper(); } public async Task<List<Organization>> GetAllOrganizations() { - var entities = await _repository.GetAllAsync(); + var entities = await _organizationsRepository.GetAllAsync(); var organizations = entities.Select(x => _mapper.Create(x)).ToList(); return organizations; } - public Task<long> DeleteAllOrganizations() + public async Task<long> DeleteAllOrganizations() { - return _repository.DeleteAsync(x => true); + var orgs = await GetAllOrganizations(); + + long count = 0; + + foreach (var org in orgs) + { + count += await DeleteOrganizationByID(org.ID); + } + + return count; } public async Task<Organization> AddOrganization(Organization organization) { OrganizationEntity entity = _mapper.Create(organization); - entity = await _repository.Insert(entity); + entity = await _organizationsRepository.Insert(entity); _mapper.Map(entity, organization); @@ -48,7 +59,7 @@ namespace Tango.BLL.Services public async Task<Organization> GetOrganizationByID(String id) { - var entity = (await _repository.GetAsync(x => x.ID == id)).ToList().SingleOrDefault(); + var entity = (await _organizationsRepository.GetAsync(x => x.ID == id)).ToList().SingleOrDefault(); if (entity == null) { @@ -60,12 +71,14 @@ namespace Tango.BLL.Services public async Task<long> DeleteOrganizationByID(String id) { - return await _repository.DeleteAsync(x => x.ID == id); + await _machinesRepository.DeleteAsync(x => x.OrganizationID == id); + long count = await _organizationsRepository.DeleteAsync(x => x.ID == id); + return count; } public async Task<long> Count() { - return await _repository.Count(); + return await _organizationsRepository.Count(); } } } diff --git a/Software/Visual_Studio_v2/Tango.DAL.Mongo/MongoRepository.cs b/Software/Visual_Studio_v2/Tango.DAL.Mongo/MongoRepository.cs index 864bb17cc..7ffdc505a 100644 --- a/Software/Visual_Studio_v2/Tango.DAL.Mongo/MongoRepository.cs +++ b/Software/Visual_Studio_v2/Tango.DAL.Mongo/MongoRepository.cs @@ -23,6 +23,11 @@ namespace Tango.DAL.Mongo _database = _client.GetDatabase(settings.DatabaseName); } + public MongoRepository(IMongoDatabase database) + { + _database = database; + } + private IMongoCollection<T> GetCollection() { if (_collection == null) diff --git a/Software/Visual_Studio_v2/Tango.DAL.Mongo/MongoUnitOfWork.cs b/Software/Visual_Studio_v2/Tango.DAL.Mongo/MongoUnitOfWork.cs new file mode 100644 index 000000000..b85dab1da --- /dev/null +++ b/Software/Visual_Studio_v2/Tango.DAL.Mongo/MongoUnitOfWork.cs @@ -0,0 +1,56 @@ +using MongoDB.Driver; +using System; +using System.Collections.Generic; +using System.Text; +using Tango.DAL.Entities; + +namespace Tango.DAL.Mongo +{ + public class MongoUnitOfWork : IUnitOfWork + { + private IMongoDatabase _database; + private MongoClient _client; + private IClientSessionHandle _sessionHandler; + private bool _commited; + + private IRepository<OrganizationEntity> _organizations; + private IRepository<MachineEntity> _machines; + + public MongoUnitOfWork(MongoDataBaseSettings settings) + { + _client = new MongoClient(settings.Address); + _database = _client.GetDatabase(settings.DatabaseName); + + _sessionHandler = _client.StartSession(); + } + + public IRepository<OrganizationEntity> Organizations + { + get + { + return _organizations ?? new MongoRepository<OrganizationEntity>(_database); + } + } + + public IRepository<MachineEntity> Machines + { + get + { + return _machines ?? new MongoRepository<MachineEntity>(_database); + } + } + + public void Commit() + { + _sessionHandler.CommitTransaction(); + } + + public void Dispose() + { + if (!_commited) + { + _sessionHandler.AbortTransaction(); + } + } + } +} diff --git a/Software/Visual_Studio_v2/Tango.DAL/Entities/MachineEntity.cs b/Software/Visual_Studio_v2/Tango.DAL/Entities/MachineEntity.cs new file mode 100644 index 000000000..50fddee36 --- /dev/null +++ b/Software/Visual_Studio_v2/Tango.DAL/Entities/MachineEntity.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Tango.DAL.Attributes; +using Tango.DAL.Models; + +namespace Tango.DAL.Entities +{ + [Collection("Machines")] + public class MachineEntity : Entity + { + public DateTime LastUpdated { get; set; } + + [Unique] + public string SerialNumber { get; set; } + + public DateTime ProductionDate { get; set; } + + public string OrganizationID { get; set; } + + public string MachineVersionID { get; set; } + + public MachineConfigurationModel Configuration { get; set; } + + public MachineSettingsModel Settings { get; set; } + + public MachineEntity() + { + Configuration = new MachineConfigurationModel(); + Settings = new MachineSettingsModel(); + } + } +} diff --git a/Software/Visual_Studio_v2/Tango.DAL/IUnitOfWork.cs b/Software/Visual_Studio_v2/Tango.DAL/IUnitOfWork.cs new file mode 100644 index 000000000..1c36c22a8 --- /dev/null +++ b/Software/Visual_Studio_v2/Tango.DAL/IUnitOfWork.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Tango.DAL.Entities; + +namespace Tango.DAL +{ + public interface IUnitOfWork : IDisposable + { + IRepository<OrganizationEntity> Organizations { get; } + IRepository<MachineEntity> Machines { get; } + void Commit(); + } +} diff --git a/Software/Visual_Studio_v2/Tango.DAL/Models/MachineConfigurationModel.cs b/Software/Visual_Studio_v2/Tango.DAL/Models/MachineConfigurationModel.cs new file mode 100644 index 000000000..e8f6c345d --- /dev/null +++ b/Software/Visual_Studio_v2/Tango.DAL/Models/MachineConfigurationModel.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Tango.DAL.Models +{ + public class MachineConfigurationModel + { + + } +} diff --git a/Software/Visual_Studio_v2/Tango.DAL/Models/MachineSettingsModel.cs b/Software/Visual_Studio_v2/Tango.DAL/Models/MachineSettingsModel.cs new file mode 100644 index 000000000..ad5bab342 --- /dev/null +++ b/Software/Visual_Studio_v2/Tango.DAL/Models/MachineSettingsModel.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Tango.DAL.Models +{ + public class MachineSettingsModel + { + public string OSKey { get; set; } + + public bool AutoLogin { get; set; } + + public bool AutoCheckForUpdates { get; set; } + + public bool SetupActivation { get; set; } + + public bool SetupRemoteAssistance { get; set; } + + public bool SetupUWF { get; set; } + + public bool SetupFirmware { get; set; } + + public bool IsDemo { get; set; } + + public bool SuspendVersionUpdate { get; set; } + + public bool PerformSchemaUpdateOnVersionUpdate { get; set; } + } +} |
