Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file not shown.
4 changes: 4 additions & 0 deletions src/ImportData/Constants.cs
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,10 @@ public class KeyAttributes
public const string Extension = "Extension";
public const string DocumentKinds = "DocumentKinds";
public const string RecipientLinks = "RecipientLinks";
public const string UserBusinessUnit = "UserBusinessUnit";
public const string SubstituteBusinessUnit = "SubstituteBusinessUnit";
public const string SubstitutionUser = "SubstitutionUser";
public const string SubstitutionSubstitute = "SubstitutionSubstitute";
}

public static Dictionary<string, string> AttributeValue = new Dictionary<string, string>
Expand Down
4 changes: 2 additions & 2 deletions src/ImportData/Entities/Databooks/Substitution.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ namespace ImportData.Entities.Databooks
{
public class Substitution : Entity
{
public override int PropertiesCount { get { return 4; } }
protected override Type EntityType { get { return typeof(ISubstitutions); } }
public override int PropertiesCount { get { return 6; } }
protected override Type EntityType { get { return typeof(ISubstitutionsWithBU); } }

protected override bool FillProperies(List<Structures.ExceptionsStruct> exceptionList, NLog.Logger logger)
{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
using DocumentFormat.OpenXml.Wordprocessing;
using ImportData.Entities.Databooks;
using System.Collections.Generic;

namespace ImportData.IntegrationServicesClient.Models
{
[EntityName("Пользователи")]
public class ISubstitutionSubstitute: IEntity
{
[PropertyOptions("НОР замещающего", RequiredType.NotRequired, PropertyType.Entity, AdditionalCharacters.ForSearch)]
public IBusinessUnits SubstituteBusinessUnit { get; set; }

public IUsers User;

new public static IEntity FindEntity(Dictionary<string, string> propertiesForSearch, Entity entity, bool isEntityForUpdate, List<Structures.ExceptionsStruct> exceptionList, NLog.Logger logger)
{
var name = propertiesForSearch.ContainsKey(Constants.KeyAttributes.CustomFieldName) ?
propertiesForSearch[Constants.KeyAttributes.CustomFieldName] : propertiesForSearch[Constants.KeyAttributes.Substitute];

entity.ResultValues.TryGetValue(Constants.KeyAttributes.SubstituteBusinessUnit, out var substituteBusinessUnit);
var businessUnit = (IBusinessUnits)substituteBusinessUnit;
if (businessUnit != null)
{
var employee = BusinessLogic.GetEntityWithFilter<IEmployees>(x => x.Name == name && x.Department != null && x.Department.BusinessUnit != null && x.Department.BusinessUnit.Id == businessUnit.Id, exceptionList, logger);
if (employee != null)
return new ISubstitutionSubstitute { User = employee };
}

var user = BusinessLogic.GetEntityWithFilter<IUsers>(x => x.Name == name, exceptionList, logger);
if (user != null)
return new ISubstitutionSubstitute { User = user };
return null;
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
using DocumentFormat.OpenXml.Wordprocessing;
using ImportData.Entities.Databooks;
using System.Collections.Generic;

namespace ImportData.IntegrationServicesClient.Models
{
[EntityName("Пользователи")]
public class ISubstitutionUsers : IEntity
{
[PropertyOptions("НОР замещаемого", RequiredType.NotRequired, PropertyType.Entity, AdditionalCharacters.ForSearch)]
public IBusinessUnits UserBusinessUnit { get; set; }

public IUsers User;

new public static IEntity FindEntity(Dictionary<string, string> propertiesForSearch, Entity entity, bool isEntityForUpdate, List<Structures.ExceptionsStruct> exceptionList, NLog.Logger logger)
{
var name = propertiesForSearch.ContainsKey(Constants.KeyAttributes.CustomFieldName) ?
propertiesForSearch[Constants.KeyAttributes.CustomFieldName] : propertiesForSearch[Constants.KeyAttributes.User];

entity.ResultValues.TryGetValue(Constants.KeyAttributes.UserBusinessUnit, out var userBusinessUnit);
var businessUnit = (IBusinessUnits)userBusinessUnit;
if (businessUnit != null)
{
var employee = BusinessLogic.GetEntityWithFilter<IEmployees>(x => x.Name == name && x.Department != null && x.Department.BusinessUnit != null && x.Department.BusinessUnit.Id == businessUnit.Id, exceptionList, logger);
if (employee != null)
return new ISubstitutionUsers { User = employee };
}

var user = BusinessLogic.GetEntityWithFilter<IUsers>(x => x.Name == name, exceptionList, logger);
if (user != null)
return new ISubstitutionUsers { User = user };
return null;
}
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq.Expressions;

namespace ImportData.IntegrationServicesClient.Models
{
Expand Down Expand Up @@ -27,11 +28,7 @@ public DateTimeOffset? EndDate
public bool DelegateStrictRights { get; set; }
public string Comment { get; set; }
public string Status { get; set; }

[PropertyOptions("Сотрудник", RequiredType.Required, PropertyType.Entity, AdditionalCharacters.ForSearch)]
public IUsers User { get; set; }

[PropertyOptions("Замещающий", RequiredType.Required, PropertyType.Entity, AdditionalCharacters.ForSearch)]
public IUsers Substitute { get; set; }

new public static IEntity CreateEntity(Dictionary<string, string> propertiesForSearch, Entity entity, List<Structures.ExceptionsStruct> exceptionList, bool isBatch, NLog.Logger logger)
Expand All @@ -47,15 +44,6 @@ public DateTimeOffset? EndDate
}, exceptionList, logger);
}

new public static IEntity FindEntity(Dictionary<string, string> propertiesForSearch, Entity entity, bool isEntityForUpdate, List<Structures.ExceptionsStruct> exceptionList, NLog.Logger logger)
{
var userName = propertiesForSearch[Constants.KeyAttributes.User];
var substituteName = propertiesForSearch[Constants.KeyAttributes.Substitute];
var name = string.Format("{0} - {1}", substituteName, userName);

return BusinessLogic.GetEntityWithFilter<ISubstitutions>(x => x.User.Name == name && x.Substitute.Name == substituteName, exceptionList, logger);
}

new public static IEntityBase CreateOrUpdate(IEntity entity, bool isNewEntity, bool isBatch, List<Structures.ExceptionsStruct> exceptionList, NLog.Logger logger)
{
if (isNewEntity)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
using DocumentFormat.OpenXml.Wordprocessing;
using System.Collections.Generic;

namespace ImportData.IntegrationServicesClient.Models
{
[EntityName("Замещения")]
public class ISubstitutionsWithBU : ISubstitutions
{

[PropertyOptions("НОР замещаемого", RequiredType.NotRequired, PropertyType.Entity, AdditionalCharacters.ForSearch)]
public IBusinessUnits UserBusinessUnit { get; set; }

[PropertyOptions("НОР замещающего", RequiredType.NotRequired, PropertyType.Entity, AdditionalCharacters.ForSearch)]
public IBusinessUnits SubstituteBusinessUnit { get; set; }

[PropertyOptions("Сотрудник", RequiredType.Required, PropertyType.Entity, AdditionalCharacters.ForSearch)]
public ISubstitutionUsers SubstitutionUser { get; set; }

[PropertyOptions("Замещающий", RequiredType.Required, PropertyType.Entity, AdditionalCharacters.ForSearch)]
public ISubstitutionSubstitute SubstitutionSubstitute { get; set; }

public ISubstitutions Substitution { get; set; }

new public static IEntity CreateEntity(Dictionary<string, string> propertiesForSearch, Entity entity, List<Structures.ExceptionsStruct> exceptionList, bool isBatch, NLog.Logger logger)
{
var userName = propertiesForSearch[Constants.KeyAttributes.User];
var substituteName = propertiesForSearch[Constants.KeyAttributes.Substitute];

var createdEntity = new ISubstitutionsWithBU();
createdEntity.Substitution = BusinessLogic.CreateEntity(new ISubstitutions()
{
Name = string.Format("{0} - {1}", substituteName, userName),
DelegateStrictRights = false,
Status = Constants.AttributeValue[Constants.KeyAttributes.Status]
}, exceptionList, logger);
return createdEntity;
}

new public static IEntity FindEntity(Dictionary<string, string> propertiesForSearch, Entity entity, bool isEntityForUpdate, List<Structures.ExceptionsStruct> exceptionList, NLog.Logger logger)
{
if (entity.ResultValues.TryGetValue(Constants.KeyAttributes.SubstitutionUser, out var user) &&
entity.ResultValues.TryGetValue(Constants.KeyAttributes.SubstitutionSubstitute, out var substitute))
{
var userId = ((ISubstitutionUsers)user).User.Id;
var substituteId = ((ISubstitutionSubstitute)substitute).User.Id;
var substitution = BusinessLogic.GetEntityWithFilter<ISubstitutions>(x => x.User.Id == userId && x.Substitute.Id == substituteId, exceptionList, logger);

if (substitution != null)
return new ISubstitutionsWithBU { Substitution = substitution };
}

return null;
}
new public static IEntityBase CreateOrUpdate(IEntity entity, bool isNewEntity, bool isBatch, List<Structures.ExceptionsStruct> exceptionList, NLog.Logger logger)
{
var substitutionsWithBU = (ISubstitutionsWithBU)entity;
var substitute = substitutionsWithBU.SubstitutionSubstitute?.User;
var user = substitutionsWithBU.SubstitutionUser?.User;
if (substitutionsWithBU.Substitution == null)
{
substitutionsWithBU.Substitution = new ISubstitutions()
{
Name = string.Format("{0} - {1}", substitute?.Name, user?.Name),
DelegateStrictRights = false,
Status = Constants.AttributeValue[Constants.KeyAttributes.Status]
};
}

substitutionsWithBU.Substitution.Substitute = substitute;
substitutionsWithBU.Substitution.User = user;
substitutionsWithBU.Substitution.Comment = substitutionsWithBU.Comment;
substitutionsWithBU.Substitution.DelegateStrictRights = substitutionsWithBU.DelegateStrictRights;
substitutionsWithBU.Substitution.StartDate = substitutionsWithBU.StartDate;
substitutionsWithBU.Substitution.EndDate = substitutionsWithBU.EndDate;
substitutionsWithBU.Substitution.IsSystem = substitutionsWithBU.IsSystem;

if (isNewEntity)
substitutionsWithBU.Substitution = BusinessLogic.CreateEntity(substitutionsWithBU.Substitution, exceptionList, logger);
else
substitutionsWithBU.Substitution = BusinessLogic.UpdateEntity(substitutionsWithBU.Substitution, exceptionList, logger);

return substitutionsWithBU;
}

}
}
Binary file modified src/Tests/Templates/Substitutions.xlsx
Binary file not shown.