Skip to content

Commit

Permalink
* Various encoding fixes
Browse files Browse the repository at this point in the history
* BaseFilter crash fix
* Add Get (KeyProps) method in EntityUtilites
* Changed project stucture. Now Dto, Filters, Enums folder move to root. Models folder remove
  • Loading branch information
vahpetr committed Sep 15, 2015
1 parent 14d1c1f commit 7add968
Show file tree
Hide file tree
Showing 15 changed files with 82 additions and 70 deletions.
8 changes: 4 additions & 4 deletions Common.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,10 @@
<Compile Include="Extensions\MappingExtensions.cs" />
<Compile Include="Facades\Contract\IFacade.cs" />
<Compile Include="Facades\Facade.cs" />
<Compile Include="Models\Dto\ResultDto.cs" />
<Compile Include="Models\Enums\Order.cs" />
<Compile Include="Models\Filters\BaseFilter.cs" />
<Compile Include="Models\Filters\PagingFilter.cs" />
<Compile Include="Dto\ResultDto.cs" />
<Compile Include="Enums\Order.cs" />
<Compile Include="Filters\BaseFilter.cs" />
<Compile Include="Filters\PagingFilter.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Repositories\Contract\IEditRepository.cs" />
<Compile Include="Repositories\Contract\IReadRepository.cs" />
Expand Down
2 changes: 1 addition & 1 deletion Models/Dto/ResultDto.cs → Dto/ResultDto.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using System.Collections.Generic;

namespace Common.Models.Dto
namespace Common.Dto
{
/// <summary>
/// Результат
Expand Down
2 changes: 1 addition & 1 deletion Models/Enums/Order.cs → Enums/Order.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Common.Models.Enums
namespace Common.Enums
{
/// <summary>
/// Направление сортировки
Expand Down
4 changes: 2 additions & 2 deletions Facades/Contract/IFacade.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using System.Threading.Tasks;
using Common.Models.Dto;
using Common.Models.Filters;
using Common.Dto;
using Common.Filters;

namespace Common.Facades.Contract
{
Expand Down
4 changes: 2 additions & 2 deletions Facades/Facade.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
using System;
using System.Threading.Tasks;
using Common.Dto;
using Common.Facades.Contract;
using Common.Models.Dto;
using Common.Models.Filters;
using Common.Filters;
using Common.Services.Contract;
using Common.Utilites;

Expand Down
22 changes: 14 additions & 8 deletions Models/Filters/BaseFilter.cs → Filters/BaseFilter.cs
Original file line number Diff line number Diff line change
@@ -1,31 +1,37 @@
using Common.Models.Enums;
using Common.Enums;

namespace Common.Models.Filters
namespace Common.Filters
{
/// <summary>
/// Базовый фильтр
/// </summary>
public class BaseFilter : PagingFilter
{
private string sort;
private string _sortBy;

public BaseFilter()
{
Sort = "Position";
Order = Order.Asc;
SortBy = "Position";
Order = Order.Desc;
}

/// <summary>
/// Сортировать по
/// </summary>
public string Sort
public string SortBy
{
get
{
return sort;
return _sortBy;
}
set
{
if (!string.IsNullOrEmpty(value))
{
_sortBy = "Position";
return;
}

//http://www.dotnetperls.com/uppercase-first-letter
var array = value.ToCharArray();
// Handle the first letter in the string.
Expand All @@ -46,7 +52,7 @@ public string Sort
array[i] = char.ToUpper(array[i]);
}
}
sort = new string(array);
_sortBy = new string(array);
}
}

Expand Down
2 changes: 1 addition & 1 deletion Models/Filters/PagingFilter.cs → Filters/PagingFilter.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using System;

namespace Common.Models.Filters
namespace Common.Filters
{
/// <summary>
/// Пэйджинг
Expand Down
32 changes: 16 additions & 16 deletions Repositories/Contract/IEditRepository.cs
Original file line number Diff line number Diff line change
@@ -1,51 +1,51 @@
using System;
using System;
using System.Linq.Expressions;
using System.Threading.Tasks;

namespace Common.Repositories.Contract
{
/// <summary>
/// Èíòåðôåéñ õðàíàëèùà ðåäàêòèðîâàíèÿ äàííûõ
/// Интерфейс храналища редактирования данных
/// </summary>
/// <typeparam name="TEntity">Ñóùüíîñòü</typeparam>
/// <typeparam name="TEntity">Тип сущьностит</typeparam>
public interface IEditRepository<TEntity>
where TEntity : class
{
/// <summary>
/// Äîáàâèòü ãðàô ñóùíîñòè
/// Добавить граф сущности
/// </summary>
/// <param name="entity">Íîâàûé ãðàô ñóùíîñòè</param>
/// <param name="entity">Новаый граф сущности</param>
void Add(TEntity entity);

/// <summary>
/// Ïîìåòèòü ñâîéñòâî ñóùüíîñòè êàê èçìåí¸ííîå
/// Пометить свойство сущьности как изменённое
/// </summary>
/// <param name="entity">Ñóùíîñòü</param>
/// <param name="expressions">Ñâîéñòâà</param>
/// <param name="entity">Сущность</param>
/// <param name="expressions">Свойства</param>
void Modified(TEntity entity, params Expression<Func<TEntity, object>>[] expressions);

/// <summary>
/// Îáíîâèòü ãðàô ñóùíîñòè
/// Обновить граф сущности
/// </summary>
/// <param name="entity">Îáíîâëÿåìûé ãðàô ñóùíîñòè</param>
/// <param name="entity">Обновляемый граф сущности</param>
void Update(TEntity entity);

/// <summary>
/// Óäàëèòü ñóùíîñòü
/// Удалить сущность
/// </summary>
/// <param name="entity">Ñóùíîñòü</param>
/// <param name="entity">Сущность</param>
void Remove(TEntity entity);

/// <summary>
/// Ñîõðàíèòü âñå èçìåíåíèÿ
/// Сохранить все изменения
/// </summary>
/// <returns>Êîëè÷åñòâî èçìåí¸ííûõ ñòðîê â áàçå</returns>
/// <returns>Количество изменённых строк в базе</returns>
int SaveChanges();

/// <summary>
/// Àñèíõðîííî ñîõðàíèòü âñå èçìåíåíèÿ
/// Асинхронно сохранить все изменения
/// </summary>
/// <returns>Êîëè÷åñòâî èçìåí¸ííûõ ñòðîê â áàçå</returns>
/// <returns>Количество изменённых строк в базе</returns>
Task<int> SaveChangesAsync();
}
}
8 changes: 4 additions & 4 deletions Repositories/Contract/IReadRepository.cs
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using Common.Models.Dto;
using Common.Models.Filters;
using Common.Dto;
using Common.Filters;

namespace Common.Repositories.Contract
{
/// <summary>
/// Интерфейс хранилища чтения
/// </summary>
/// <typeparam name="TEntity">Сущьность</typeparam>
/// <typeparam name="TFilter">Фильтр</typeparam>
/// <typeparam name="TEntity">Тип сущьности</typeparam>
/// <typeparam name="TFilter">Тип фильтра</typeparam>
public interface IReadRepository<TEntity, in TFilter>
where TEntity : class
where TFilter : BaseFilter
Expand Down
42 changes: 21 additions & 21 deletions Services/Contract/IEditService.cs
Original file line number Diff line number Diff line change
@@ -1,65 +1,65 @@
using System.Threading.Tasks;
using System.Threading.Tasks;

namespace Common.Services.Contract
{
/// <summary>
/// Èíòåðôåéñ ñåðâèñà ðåäàêòèðîâàíèÿ äàííûõ
/// Интерфейс сервиса редактирования данных
/// </summary>
/// <typeparam name="TEntity">Ñóùüíîñòü</typeparam>
/// <typeparam name="TEntity">Тип сущьности</typeparam>
public interface IEditService<in TEntity>
where TEntity : class
{
/// <summary>
/// Äîáàâèòü ãðàô ñóùíîñòè
/// Добавить граф сущности
/// </summary>
/// <param name="entity">Íîâàûé ãðàô ñóùíîñòè</param>
/// <param name="entity">Новаый граф сущности</param>
void Add(TEntity entity);

/// <summary>
/// Àñèíõðîííî äîáàâèòü ãðàô ñóùíîñòè
/// Асинхронно добавить граф сущности
/// </summary>
/// <param name="entity">Íîâàûé ãðàô ñóùíîñòè</param>
/// <param name="entity">Новаый граф сущности</param>
/// <returns></returns>
Task AddAsync(TEntity entity);

/// <summary>
/// Îáíîâèòü ãðàô ñóùíîñòè
/// Обновить граф сущности
/// </summary>
/// <param name="currEntity">Îáíîâëÿåìàÿ ñóùíîñòü</param>
/// <param name="prevEntity">Ñóùíîñòü èç áàçû äàííûõ</param>
/// <param name="currEntity">Обновляемая сущность</param>
/// <param name="prevEntity">Сущность из базы данных</param>
void Update(TEntity currEntity, TEntity prevEntity);

/// <summary>
/// Àñèíõðîííî îáíîâèòü ãðàô ñóùíîñòè
/// Асинхронно обновить граф сущности
/// </summary>
/// <param name="currEntity">Îáíîâëÿåìàÿ ñóùíîñòü</param>
/// <param name="prevEntity">Ñóùíîñòü èç áàçû äàííûõ</param>
/// <param name="currEntity">Обновляемая сущность</param>
/// <param name="prevEntity">Сущность из базы данных</param>
/// <returns></returns>
Task UpdateAsync(TEntity currEntity, TEntity prevEntity);

/// <summary>
/// Óäàëèòü ñóùíîñòü
/// Удалить сущность
/// </summary>
/// <param name="entity">Ñóùíîñòü</param>
/// <param name="entity">Сущность</param>
void Remove(TEntity entity);

/// <summary>
/// Àñèíõðîííî óäàëèòü ñóùíîñòü
/// Асинхронно удалить сущность
/// </summary>
/// <param name="entity">Ñóùíîñòü</param>
/// <param name="entity">Сущность</param>
/// <returns></returns>
Task RemoveAsync(TEntity entity);

/// <summary>
/// Ñîõðàíèòü âñå èçìåíåíèÿ
/// Сохранить все изменения
/// </summary>
/// <returns>Êîëè÷åñòâî èçìåí¸ííûõ ñòðîê â áàçå</returns>
/// <returns>Количество изменённых строк в базе</returns>
int Commit();

/// <summary>
/// Àñèíõðîííî ñîõðàíèòü âñå èçìåíåíèÿ
/// Асинхронно сохранить все изменения
/// </summary>
/// <returns>Êîëè÷åñòâî èçìåí¸ííûõ ñòðîê â áàçå</returns>
/// <returns>Количество изменённых строк в базе</returns>
Task<int> CommitAsync();
}
}
6 changes: 3 additions & 3 deletions Services/Contract/IReadService.cs
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using Common.Models.Dto;
using Common.Dto;

namespace Common.Services.Contract
{
/// <summary>
/// Интерфейс сервиса чтения
/// </summary>
/// <typeparam name="TEntity">Сущьность</typeparam>
/// <typeparam name="TFilter">Фильтр</typeparam>
/// <typeparam name="TEntity">Тип сущьности</typeparam>
/// <typeparam name="TFilter">Тип фильтра</typeparam>
public interface IReadService<TEntity, in TFilter>
where TEntity : class
where TFilter : class
Expand Down
4 changes: 2 additions & 2 deletions Services/EditService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ namespace Common.Services
/// <summary>
/// Базовый сервис редактирования данных
/// </summary>
/// <typeparam name="TEntity">Сущность</typeparam>
/// <typeparam name="TEditRepository"></typeparam>
/// <typeparam name="TEntity">Тип сущьности</typeparam>
/// <typeparam name="TEditRepository">Тип хранилища редактирования</typeparam>
public class EditService<TEntity, TEditRepository> : IEditService<TEntity>
where TEntity : class
where TEditRepository : IEditRepository<TEntity>
Expand Down
10 changes: 5 additions & 5 deletions Services/ReadService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using System.Threading.Tasks;
using Common.Models.Dto;
using Common.Models.Filters;
using Common.Dto;
using Common.Filters;
using Common.Repositories.Contract;
using Common.Services.Contract;

Expand All @@ -12,9 +12,9 @@ namespace Common.Services
/// <summary>
/// Базовый сервис чтения данных
/// </summary>
/// <typeparam name="TEntity">Сущность контекста</typeparam>
/// <typeparam name="TFilter">Фильтр сущностей</typeparam>
/// <typeparam name="TReadRepository"></typeparam>
/// <typeparam name="TEntity">Тип сущьности</typeparam>
/// <typeparam name="TFilter">Тип фильтра</typeparam>
/// <typeparam name="TReadRepository">Тип хранилища чтения</typeparam>
public class ReadService<TEntity, TFilter, TReadRepository> : IReadService<TEntity, TFilter>
where TEntity : class
where TFilter : BaseFilter
Expand Down
5 changes: 5 additions & 0 deletions Utilites/EntityUtilites.cs
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,11 @@ static EntityUtilites()
}
}
}

public static PropertyInfo[] Get(TEntity entity)
{
return KeyProps;
}
}

public static class EntityGetKeyExpressionUtilites<TEntity> where TEntity : class
Expand Down
1 change: 1 addition & 0 deletions Utilites/ObjectUtilites.cs
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,7 @@ public static IEnumerable<PropertyInfo> GetCollectionProps(Type type, params str
/// </summary>
/// <param name="obj">Объект</param>
/// <param name="target">Тип</param>
/// <param name="references">Проверенные ссылки</param>
public static void CleanPropertyByType(object obj, Type target, List<object> references = null)
{
if (references == null) references = new List<object>();
Expand Down

0 comments on commit 7add968

Please sign in to comment.