Advertisement
Guest User

Untitled

a guest
Nov 17th, 2016
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.57 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3.  
  4. using System.Threading;
  5. using System.Threading.Tasks;
  6.  
  7. #region DS.Framework
  8.  
  9.  
  10. namespace DS.Framework.Collections
  11. {
  12. /// <summary></summary>
  13. public interface IPage
  14. {
  15. #region properties
  16.  
  17.  
  18. /// <summary></summary>
  19. int CurrentPageIndex { get; }
  20. /// <summary></summary>
  21. int CurrentPageSize { get; }
  22.  
  23. /// <summary></summary>
  24. bool HasNextPage { get; }
  25. /// <summary></summary>
  26. bool HasPrevPage { get; }
  27.  
  28. /// <summary></summary>
  29. int TotalCount { get; }
  30. /// <summary></summary>
  31. int TotalPages { get; }
  32.  
  33.  
  34. #endregion
  35. }
  36.  
  37. /// <summary></summary>
  38. /// <typeparam name="T"></typeparam>
  39. public interface IPage<T> : IPage, IList<T>
  40. {
  41. }
  42. }
  43.  
  44. namespace DS.Framework.Extensions
  45. {
  46. using System.Linq;
  47.  
  48. /// <summary></summary>
  49. public static class SystemExtensions
  50. {
  51. #region methods (static)
  52.  
  53.  
  54. /// <summary></summary>
  55. /// <typeparam name="T"></typeparam>
  56. /// <param name="source"></param>
  57. /// <returns></returns>
  58. public static bool None<T>(this IEnumerable<T> source)
  59. {
  60. return !source.Any();
  61. }
  62.  
  63. /// <summary></summary>
  64. /// <typeparam name="T"></typeparam>
  65. /// <param name="source"></param>
  66. /// <param name="predicate"></param>
  67. /// <returns></returns>
  68. public static bool None<T>(this IEnumerable<T> source, System.Func<T, bool> predicate)
  69. {
  70. return !source.Any(predicate);
  71. }
  72.  
  73.  
  74. #endregion
  75. }
  76. }
  77.  
  78.  
  79. #endregion
  80.  
  81. #region DS.Framework.Entities
  82.  
  83.  
  84. namespace DS.Framework.Entities
  85. {
  86. using DS.Framework.Collections;
  87.  
  88. /// <summary></summary>
  89. public interface IEntity
  90. {
  91. #region properties
  92.  
  93.  
  94. /// <summary></summary>
  95. object Id { get; set; }
  96.  
  97.  
  98. #endregion
  99. }
  100.  
  101. /// <summary></summary>
  102. public interface IEntityRepository
  103. {
  104. #region methods
  105.  
  106.  
  107. /// <summary></summary>
  108. /// <typeparam name="T"></typeparam>
  109. /// <param name="entity"></param>
  110. /// <param name="ct"></param>
  111. /// <returns></returns>
  112. Task<T> CreateAsync<T>(T entity, CancellationToken ct)
  113. where T : IEntity;
  114.  
  115. /// <summary></summary>
  116. /// <typeparam name="T"></typeparam>
  117. /// <param name="entities"></param>
  118. /// <param name="ct"></param>
  119. /// <returns></returns>
  120. Task<IList<T>> CreateAsync<T>(IList<T> entities, CancellationToken ct)
  121. where T : IEntity;
  122.  
  123. /// <summary></summary>
  124. /// <typeparam name="T"></typeparam>
  125. /// <param name="entityId"></param>
  126. /// <param name="ct"></param>
  127. /// <returns></returns>
  128. Task<T> RetrieveAsync<T>(object entityId, CancellationToken ct)
  129. where T : IEntity;
  130.  
  131. /// <summary></summary>
  132. /// <typeparam name="T"></typeparam>
  133. /// <param name="filter"></param>
  134. /// <param name="ct"></param>
  135. /// <returns></returns>
  136. Task<IList<T>> RetrieveAsync<T>(System.Predicate<T> filter, CancellationToken ct)
  137. where T : IEntity;
  138.  
  139. /// <summary></summary>
  140. /// <typeparam name="T"></typeparam>
  141. /// <param name="filter"></param>
  142. /// <param name="sortby"></param>
  143. /// <param name="ct"></param>
  144. /// <returns></returns>
  145. Task<IList<T>> RetrieveAsync<T>(System.Predicate<T> filter, System.Comparison<T> sortby, CancellationToken ct)
  146. where T : IEntity;
  147.  
  148. /// <summary></summary>
  149. /// <typeparam name="T"></typeparam>
  150. /// <param name="filter"></param>
  151. /// <param name="sortby"></param>
  152. /// <param name="pageIndex"></param>
  153. /// <param name="pageSize"></param>
  154. /// <param name="ct"></param>
  155. /// <returns></returns>
  156. Task<IPage<T>> RetrieveAsync<T>(System.Predicate<T> filter, System.Comparison<T> sortby, int pageIndex, int pageSize, CancellationToken ct)
  157. where T : IEntity;
  158.  
  159. /// <summary></summary>
  160. /// <typeparam name="T"></typeparam>
  161. /// <param name="entity"></param>
  162. /// <param name="ct"></param>
  163. /// <returns></returns>
  164. Task<T> UpdateAsync<T>(T entity, CancellationToken ct)
  165. where T : IEntity;
  166.  
  167. /// <summary></summary>
  168. /// <typeparam name="T"></typeparam>
  169. /// <param name="entities"></param>
  170. /// <param name="ct"></param>
  171. /// <returns></returns>
  172. Task<IList<T>> UpdateAsync<T>(IList<T> entities, CancellationToken ct)
  173. where T : IEntity;
  174.  
  175. /// <summary></summary>
  176. /// <param name="entityId"></param>
  177. /// <param name="ct"></param>
  178. /// <returns></returns>
  179. Task DeleteAsync(object entityId, CancellationToken ct);
  180.  
  181. /// <summary></summary>
  182. /// <param name="entityIds"></param>
  183. /// <param name="ct"></param>
  184. /// <returns></returns>
  185. Task DeleteAsync(IList<object> entityIds, CancellationToken ct);
  186.  
  187.  
  188. #endregion
  189. }
  190.  
  191.  
  192. /// <summary></summary>
  193. public abstract class BaseEntity
  194. {
  195. }
  196.  
  197. /// <summary></summary>
  198. /// <typeparam name="TEntityId"></typeparam>
  199. public abstract class BaseEntity<TEntityId> : BaseEntity, IEntity
  200. {
  201. #region properties
  202.  
  203.  
  204. /// <summary></summary>
  205. public TEntityId Id { get; set; }
  206.  
  207.  
  208. #endregion
  209.  
  210. #region IEntity properties
  211.  
  212.  
  213. object IEntity.Id
  214. {
  215. get { return this.Id; }
  216. set { this.Id = (TEntityId)value; }
  217. }
  218.  
  219.  
  220. #endregion
  221. }
  222. }
  223.  
  224.  
  225. #endregion
  226.  
  227. #region DS.Framework.Entities.Couch
  228.  
  229.  
  230. namespace DS.Framework.Entities.Couch
  231. {
  232. using DS.Framework.Collections;
  233.  
  234. /// <summary></summary>
  235. /// <typeparam name="TEntityId"></typeparam>
  236. public abstract class CouchEntity<TEntityId> : BaseEntity<TEntityId>
  237. {
  238. #region ctor
  239.  
  240.  
  241. /// <summary></summary>
  242. protected CouchEntity()
  243. {
  244. this.Type = this.GetType().FullName;
  245. }
  246.  
  247.  
  248. #endregion
  249.  
  250. #region properties
  251.  
  252.  
  253. /// <summary></summary>
  254. public string Type { get; private set; }
  255.  
  256.  
  257. #endregion
  258. }
  259.  
  260. /// <summary></summary>
  261. public abstract class CouchEntityRepository : IEntityRepository
  262. {
  263. #region ctor
  264.  
  265.  
  266. /// <summary></summary>
  267. /// <param name="cluster"></param>
  268. protected CouchEntityRepository(Couchbase.Core.ICluster cluster)
  269. {
  270. this.Cluster = cluster;
  271. }
  272.  
  273.  
  274. #endregion
  275.  
  276. #region properties
  277.  
  278.  
  279. /// <summary></summary>
  280. protected Couchbase.Core.ICluster Cluster { get; private set; }
  281.  
  282. /// <summary></summary>
  283. protected abstract string BucketName { get; }
  284.  
  285.  
  286. #endregion
  287.  
  288. #region IEntityRepository methods
  289.  
  290.  
  291. /// <summary></summary>
  292. /// <typeparam name="T"></typeparam>
  293. /// <param name="entity"></param>
  294. /// <param name="ct"></param>
  295. /// <returns></returns>
  296. public virtual async Task<T> CreateAsync<T>(T entity, CancellationToken ct) where T : IEntity
  297. {
  298. throw new System.NotImplementedException();
  299. }
  300.  
  301. /// <summary></summary>
  302. /// <typeparam name="T"></typeparam>
  303. /// <param name="entities"></param>
  304. /// <param name="ct"></param>
  305. /// <returns></returns>
  306. public virtual async Task<IList<T>> CreateAsync<T>(IList<T> entities, CancellationToken ct) where T : IEntity
  307. {
  308. throw new System.NotImplementedException();
  309. }
  310.  
  311. public virtual async Task DeleteAsync(object entityId, CancellationToken ct)
  312. {
  313. throw new System.NotImplementedException();
  314. }
  315.  
  316. /// <summary></summary>
  317. /// <typeparam name="T"></typeparam>
  318. /// <param name="entityId"></param>
  319. /// <param name="ct"></param>
  320. /// <returns></returns>
  321. public virtual async Task<T> RetrieveAsync<T>(object entityId, CancellationToken ct) where T : IEntity
  322. {
  323. throw new System.NotImplementedException();
  324. }
  325.  
  326. /// <summary></summary>
  327. /// <typeparam name="T"></typeparam>
  328. /// <param name="filter"></param>
  329. /// <param name="ct"></param>
  330. /// <returns></returns>
  331. public virtual async Task<IList<T>> RetrieveAsync<T>(System.Predicate<T> filter, CancellationToken ct) where T : IEntity
  332. {
  333. throw new System.NotImplementedException();
  334. }
  335.  
  336. /// <summary></summary>
  337. /// <typeparam name="T"></typeparam>
  338. /// <param name="filter"></param>
  339. /// <param name="sortby"></param>
  340. /// <param name="ct"></param>
  341. /// <returns></returns>
  342. public virtual async Task<IList<T>> RetrieveAsync<T>(System.Predicate<T> filter, System.Comparison<T> sortby, CancellationToken ct) where T : IEntity
  343. {
  344. throw new System.NotImplementedException();
  345. }
  346.  
  347. /// <summary></summary>
  348. /// <typeparam name="T"></typeparam>
  349. /// <param name="filter"></param>
  350. /// <param name="sortby"></param>
  351. /// <param name="pageIndex"></param>
  352. /// <param name="pageSize"></param>
  353. /// <param name="ct"></param>
  354. /// <returns></returns>
  355. public virtual async Task<IPage<T>> RetrieveAsync<T>(System.Predicate<T> filter, System.Comparison<T> sortby, int pageIndex, int pageSize, CancellationToken ct) where T : IEntity
  356. {
  357. throw new System.NotImplementedException();
  358. }
  359.  
  360. /// <summary></summary>
  361. /// <typeparam name="T"></typeparam>
  362. /// <param name="entity"></param>
  363. /// <param name="ct"></param>
  364. /// <returns></returns>
  365. public virtual async Task<T> UpdateAsync<T>(T entity, CancellationToken ct) where T : IEntity
  366. {
  367. throw new System.NotImplementedException();
  368. }
  369.  
  370. /// <summary></summary>
  371. /// <typeparam name="T"></typeparam>
  372. /// <param name="entities"></param>
  373. /// <param name="ct"></param>
  374. /// <returns></returns>
  375. public virtual async Task<IList<T>> UpdateAsync<T>(IList<T> entities, CancellationToken ct) where T : IEntity
  376. {
  377. throw new System.NotImplementedException();
  378. }
  379.  
  380. /// <summary></summary>
  381. /// <param name="entityIds"></param>
  382. /// <param name="ct"></param>
  383. /// <returns></returns>
  384. public virtual async Task DeleteAsync(IList<object> entityIds, CancellationToken ct)
  385. {
  386. throw new System.NotImplementedException();
  387. }
  388.  
  389.  
  390. #endregion
  391. }
  392. }
  393.  
  394.  
  395. #endregion
  396.  
  397. #region DS.Framework.Entities.MsSql
  398. #endregion
  399.  
  400. #region DS.Providers.Configuration
  401.  
  402.  
  403. namespace DS.Providers.Configuration
  404. {
  405. /// <summary></summary>
  406. public interface IConfigProvider
  407. {
  408. #region properties
  409.  
  410.  
  411. /// <summary></summary>
  412. /// <param name="key"></param>
  413. /// <returns></returns>
  414. string this[string key] { get; }
  415.  
  416.  
  417. #endregion
  418. }
  419. }
  420.  
  421.  
  422. #endregion
  423.  
  424. #region DS.Providers.Cryptography
  425. #endregion
  426.  
  427. #region DS.Providers.Email
  428.  
  429.  
  430. namespace DS.Providers.Email
  431. {
  432. /// <summary></summary>
  433. public interface IEmailProvider
  434. {
  435. #region methods
  436.  
  437.  
  438. /// <summary></summary>
  439. /// <param name="message"></param>
  440. /// <param name="ct"></param>
  441. /// <returns></returns>
  442. Task SendAsync(EmailMessage message, CancellationToken ct);
  443.  
  444. /// <summary></summary>
  445. /// <param name="messages"></param>
  446. /// <param name="ct"></param>
  447. /// <returns></returns>
  448. Task SendAsync(IList<EmailMessage> messages, CancellationToken ct);
  449.  
  450. /// <summary></summary>
  451. /// <param name="json"></param>
  452. /// <param name="template"></param>
  453. /// <returns></returns>
  454. EmailMessage Transform(string json, EmailTemplate template);
  455.  
  456.  
  457. #endregion
  458. }
  459.  
  460.  
  461. /// <summary></summary>
  462. public class EmailMessage
  463. {
  464. #region properties
  465. #endregion
  466. }
  467.  
  468. /// <summary></summary>
  469. public class EmailTemplate
  470. {
  471. #region properties
  472. #endregion
  473. }
  474. }
  475.  
  476.  
  477. #endregion
  478.  
  479. #region DS.Providers.Email.Smtp
  480.  
  481.  
  482. namespace DS.Providers.Email.Smtp
  483. {
  484. /// <summary></summary>
  485. public class SmtpProvider : IEmailProvider
  486. {
  487. #region ctor
  488.  
  489.  
  490. /// <summary></summary>
  491. /// <param name="host"></param>
  492. /// <param name="port"></param>
  493. /// <param name="username"></param>
  494. /// <param name="password"></param>
  495. public SmtpProvider(string host, string port, string username, string password)
  496. {
  497. this._host = host;
  498. this._port = port;
  499. this._user = username;
  500. this._pass = password;
  501. }
  502.  
  503.  
  504. #endregion
  505.  
  506. #region members
  507.  
  508.  
  509. private readonly string _host;
  510. private readonly string _port;
  511. private readonly string _user;
  512. private readonly string _pass;
  513.  
  514.  
  515. #endregion
  516.  
  517. #region methods
  518.  
  519.  
  520. private System.Net.Mail.SmtpClient CreateSmtpClient()
  521. {
  522. return new System.Net.Mail.SmtpClient
  523. {
  524. Host = this._host,
  525. Port = int.Parse(this._port),
  526. DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network,
  527. Credentials = new System.Net.NetworkCredential(this._user, this._user),
  528. };
  529. }
  530.  
  531. private System.Net.Mail.MailMessage CreateSmtpMessage(EmailMessage message)
  532. {
  533. throw new System.NotImplementedException();
  534. }
  535.  
  536.  
  537. #endregion
  538.  
  539. #region IEmailProvider methods
  540.  
  541.  
  542. /// <summary></summary>
  543. /// <param name="message"></param>
  544. /// <param name="ct"></param>
  545. /// <returns></returns>
  546. public virtual async Task SendAsync(EmailMessage message, CancellationToken ct)
  547. {
  548. await this.SendAsync(new List<EmailMessage> { message }, ct);
  549. }
  550.  
  551. /// <summary></summary>
  552. /// <param name="messages"></param>
  553. /// <param name="ct"></param>
  554. /// <returns></returns>
  555. public virtual async Task SendAsync(IList<EmailMessage> messages, CancellationToken ct)
  556. {
  557. using (var smtp = this.CreateSmtpClient())
  558. {
  559. foreach (var message in messages)
  560. await smtp.SendMailAsync(this.CreateSmtpMessage(message));
  561. }
  562. }
  563.  
  564. /// <summary></summary>
  565. /// <param name="json"></param>
  566. /// <param name="template"></param>
  567. /// <returns></returns>
  568. public virtual EmailMessage Transform(string json, EmailTemplate template)
  569. {
  570. throw new System.NotImplementedException();
  571. }
  572.  
  573.  
  574. #endregion
  575. }
  576. }
  577.  
  578.  
  579. #endregion
  580.  
  581.  
  582.  
  583.  
  584. #region Tests.DS.Framework
  585.  
  586.  
  587. namespace DS.Framework.Extensions
  588. {
  589. using Microsoft.VisualStudio.TestTools.UnitTesting;
  590.  
  591. [TestClass]
  592. public class SystemExtensionsTests
  593. {
  594. [TestMethod]
  595. public void None_returns_true_when_sequence_has_no_items()
  596. {
  597. // arrange
  598. var source = new List<object>();
  599.  
  600. // act
  601. var actual = SystemExtensions.None(source);
  602.  
  603. // assert
  604. Assert.IsTrue(actual);
  605. }
  606.  
  607. [TestMethod]
  608. public void None_returns_true_when_sequence_has_no_items_that_satisfy_the_given_predicate()
  609. {
  610. // arrange
  611. var source = new List<Example> { new Example(0), new Example(1) };
  612.  
  613. // act
  614. var actual = SystemExtensions.None(source, e => e.Value == 3);
  615.  
  616. // assert
  617. Assert.IsTrue(actual);
  618. }
  619.  
  620. [TestMethod]
  621. public void None_returns_false_when_sequence_has_items()
  622. {
  623. // arrange
  624. var source = new List<object> { new object(), new object() };
  625.  
  626. // act
  627. var actual = SystemExtensions.None(source);
  628.  
  629. // assert
  630. Assert.IsFalse(actual);
  631. }
  632.  
  633. [TestMethod]
  634. public void None_returns_false_when_sequence_has_items_that_satisfy_the_given_predicate()
  635. {
  636. // arrange
  637. var source = new List<Example> { new Example(0), new Example(1) };
  638.  
  639. // act
  640. var actual = SystemExtensions.None(source, e => e.Value == 0);
  641.  
  642. // assert
  643. Assert.IsFalse(actual);
  644. }
  645.  
  646. private class Example
  647. {
  648. public Example(int value)
  649. {
  650. this.Value = value;
  651. }
  652.  
  653. public int Value { get; private set; }
  654. }
  655. }
  656. }
  657.  
  658.  
  659. #endregion
  660.  
  661. #region Tests.DS.Framework.Entities
  662. #endregion
  663.  
  664. #region Tests.DS.Framework.Entities.Couch
  665. #endregion
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement