Exemplo n.º 1
0
        public static IUnitOfWork Start()
        {
            _innerUnitOfWorkFactory = ServiceLocator.Current.GetInstance<IUnitOfWorkFactory>();

            _innerUnitOfWork = _innerUnitOfWorkFactory.Create();
            
            return Current;
        }
Exemplo n.º 2
0
        public static IUnitOfWork Start()
        {
            if (_innerUnitOfWork != null)
                        throw new InvalidOperationException("You cannot start more than one unit of work at the same time.");

            _unitOfWorkFactory = Context.Current.UnitOfWorkFactory;
            _innerUnitOfWork = _unitOfWorkFactory.Create();
               return _innerUnitOfWork;
        }
Exemplo n.º 3
0
 /// <summary>
 /// Overloaded Constructor.
 /// Creates a new instance of the <see cref="UnitOfWorkScopeTransaction"/> that takes in a 
 /// <see cref="IUnitOfWorkFactory"/> instance that is responsible for creating instances of <see cref="IUnitOfWork"/> and
 /// a <see cref="IDbConnection"/> that is used by the instance to connect to the data store.
 /// </summary>
 /// <param name="unitOfWorkFactory">The <see cref="IUnitOfWorkFactory"/> implementation that is responsible
 /// for creating instances of <see cref="IUnitOfWork"/> instances.</param>
 /// <param name="isolationLevel">One of the values of <see cref="IsolationLevel"/> that specifies the transaction
 /// isolation level of the <see cref="UnitOfWorkScopeTransaction"/> instance.</param>
 public UnitOfWorkScopeTransaction(IUnitOfWorkFactory unitOfWorkFactory, IsolationLevel isolationLevel)
 {
     Guard.Against<ArgumentNullException>(unitOfWorkFactory == null,
                                          "A valid non-null instance that implements the IUnitOfWorkFactory is required.");
     _transactionID = new Guid();
     _transactionRolledback = false;
     _disposed = false;
     _unitOfWork = unitOfWorkFactory.Create();
     _runningTransaction = _unitOfWork.BeginTransaction(isolationLevel);
     _isolationLevel = isolationLevel;
     _attachedScopes = new Stack<UnitOfWorkScope>();
 }
        public void SetupContext()
        {
            _factory = _mocks.DynamicMock<IUnitOfWorkFactory>();
            _unitOfWork = _mocks.DynamicMock<IUnitOfWork>();
            _session = _mocks.DynamicMock<ISession>();

            InstrumentUnitOfWork();

            _mocks.BackToRecordAll();
            SetupResult.For(_factory.Create()).Return(_unitOfWork);
            SetupResult.For(_factory.CurrentSession).Return(_session);
            _mocks.ReplayAll();
        }
Exemplo n.º 5
0
        public void SetupContext() {
            _factory = _mocks.DynamicMock<IUnitOfWorkFactory>();
            _unitOfWork = _mocks.DynamicMock<IUnitOfWork>();
            _session = _mocks.DynamicMock<ISession>();

            var fieldInfo = typeof(UnitOfWork).GetField("_unitOfWorkFactory",
                BindingFlags.Static | BindingFlags.SetField | BindingFlags.NonPublic);
            fieldInfo.SetValue(null, _factory);

            _mocks.BackToRecordAll();
            SetupResult.For(_factory.Create()).Return(_unitOfWork);
            SetupResult.For(_factory.CurrentSession).Return(_session);
            _mocks.ReplayAll();
        }
Exemplo n.º 6
0
        public async Task SeedLibraryAsync(CancellationToken token)
        {
            if (!_ctx.Authors.Any() || !_ctx.Books.Any())
            {
                using (var unitOfWork = _unitOfWorkFactory.Create())
                {
                    var ivanko = _entityFactory.CreateAuthor(
                        "Ivan",
                        "Ivchenko",
                        new LifePeriod(new DateTime(1988, 1, 11)));

                    var slavko = _entityFactory.CreateAuthor(
                        "Myroslava",
                        "Tarcha",
                        new LifePeriod(new DateTime(1993, 5, 5)));

                    var astrid = _entityFactory.CreateAuthor(
                        "Astrid",
                        "Lindgren",
                        new LifePeriod(new DateTime(1907, 11, 14), new DateTime(2002, 1, 14)));

                    for (var i = 1; i < 10; i++)
                    {
                        var book = _entityFactory.CreateBook(
                            "Karlsson-on-the-Roof " + i,
                            new DateTime(2016, 09, 08),
                            "Karlsson-on-the-Roof is a character who figures in a series of children's books by the Swedish author Astrid Lindgren");

                        book.AddAuthor(astrid);
                    }

                    for (var i = 1; i < 10; i++)
                    {
                        var book = _entityFactory.CreateBook(
                            "Adventures of Vivchyk and Tarchavka" + i,
                            new DateTime(2016, 09, 08),
                            "Adventures of Vivchyk and Tarchavka " + i);

                        book.AddAuthor(ivanko);
                        book.AddAuthor(slavko);
                    }

                    for (var i = 1; i < 10; i++)
                    {
                        var book = _entityFactory.CreateBook(
                            "Adventures of Vivchyk" + i,
                            new DateTime(2016, 09, 08),
                            "Adventures of Vivchyk before he has met Tarchavka " + i);

                        book.AddAuthor(ivanko);
                    }

                    for (var i = 1; i < 10; i++)
                    {
                        var book = _entityFactory.CreateBook(
                            "Adventures of Tarchavka" + i,
                            new DateTime(2016, 09, 08),
                            "Adventures of Tarchavka before she has met Vivchyk " + i);

                        book.AddAuthor(slavko);
                    }

                    await unitOfWork.Authors.CreateAsync(ivanko, token);

                    await unitOfWork.Authors.CreateAsync(slavko, token);

                    await unitOfWork.Authors.CreateAsync(astrid, token);
                }
            }
        }
Exemplo n.º 7
0
 public AccountController(ICryptoProvider cryptoProvider, IUnitOfWorkFactory unitOfWorkFactory)
 {
     _cryptoProvider = cryptoProvider;
     _unitOfWork     = unitOfWorkFactory.Create();
 }
Exemplo n.º 8
0
        public IHttpActionResult AddRequest([FromBody] RequestModel model)
        {
            #region [Vendor]

            // check nearest venodr
            var vendor = _vendorRepository.First(new Specification <Vendor>(s => s.Latitude == model.Latitude && s.Longitude == model.Longitude));
            #endregion
            #region Add Request
            Request request = new Request
            {
                CustomerId  = model.CustomerId,
                CreatedOn   = DateTime.UtcNow,
                CreatedById = model.CustomerId,
                VendorId    = vendor.Id,
                Latitude    = model.Latitude,
                Longitude   = model.Longitude
            };
            request.Items = new List <Item>();
            foreach (var reqitem in model.Items)
            {
                Item item = new Item
                {
                    Data          = reqitem.Data,
                    ServiceTypeId = reqitem.ServiceTypeId
                };
                request.Items.Add(item);
            }
            using (var uow = _unitOfWorkFactory.Create())
            {
                _requestRepository.Add(request);
            }
            using (var uow = _unitOfWorkFactory.Create())
            {
                RequestHistory requestHistory = new RequestHistory()
                {
                    CreatedOn     = DateTime.Now,
                    CreatedById   = model.CustomerId,
                    RequestId     = request.Id,
                    CustomerId    = model.CustomerId,
                    RequestStatus = RequestStatus.pending
                };

                _requestHistoryRepo.Add(requestHistory);
            }
            #endregion


            #region [Notifaction]
            List <NotificationObject> listNotifications = new List <NotificationObject>();
            if (!String.IsNullOrEmpty(vendor.Token))
            {
                listNotifications.Add(new NotificationObject
                {
                    to    = vendor.Token,
                    title = "CopyLi",
                    body  = "New request created",
                    data  = new NotificationData
                    {
                        title = "CopyLi",
                        body  = "New request created",
                        code  = "VEN_NEW_REQ"
                    }
                });
            }
            // ExpoPushHelper.SendPushNotification(listNotifications);
            #endregion


            return(Ok());
        }
 public DiscordGuildDeleteConsumer(IUnitOfWorkFactory factory, IBusControl bus)
 {
     _work = factory.Create();
     _bus  = bus;
 }
Exemplo n.º 10
0
 public CategoryService(IUnitOfWorkFactory factory)
 {
     _unitOfWork = factory.Create();
    _repository = _unitOfWork.Repository<Category>();
 }
Exemplo n.º 11
0
 public GuildsController(IUnitOfWorkFactory factory, DiscordShardedClient client)
 {
     _work   = factory.Create();
     _client = client;
 }
Exemplo n.º 12
0
        public async Task <ApiResult> Handle(CreateCompany request, CancellationToken cancellationToken)
        {
            var userUid = request.UserUid ?? throw new ArgumentNullException(nameof(request.UserUid));
            var company = request.Item ?? throw new ArgumentNullException(nameof(request.Item));

            var now = _dateTimeProvider.GetUtcNow();

            var companyUid  = Guid.NewGuid();
            var documentUid = Guid.NewGuid();

            var documentTypeRepository = _classifierRepositoryFactory.GetNamedOrDefaultService(Docs.ClassifierTypeCode.DocumentType);
            var documentType           = await documentTypeRepository.Get(Docs.ClassifierTypeCode.DocumentType, DocumentTypes.CompanyRegistrationRequest, cancellationToken);

            // todo: validate fields
            var metadata = await _fieldMetadataRepository.Search(new MetadataSearchRequest
            {
                EntityTypeCode = DocumentType.EntityTypeCode,
                EntityUid      = documentType.Uid.Value,
                // todo: check flags
                // IsSystem = false,
                IsActive   = true,
                SkipPaging = true
            }, cancellationToken);

            var manageFieldDataRequest = new ManageFieldDataRequest
            {
                EntityTypeCode = Document.TypeCode,
                EntityUid      = documentUid,
                Metadata       = metadata.Rows,
                Item           = company
            };

            // todo: move to Validator (?)
            var result = await _fieldDataRepository.Validate(manageFieldDataRequest, cancellationToken);

            if (result.Success == false)
            {
                return(result);
            }

            using (var scope = _unitOfWorkFactory.Create())
            {
                using (var db = _dbContextFactory.Create())
                {
                    // todo: валидация и ограничения

                    // company + todo: creation date
                    await db.GetTable <DbCompany>()
                    .Value(x => x.Uid, companyUid)
                    .Value(x => x.ConfigCode, company.ConfigCode ?? CompanyConfigCode.Company)
                    .Value(x => x.StatusCode, CompanyStatusCode.Draft)
                    .Value(x => x.Name, company.Name)
                    .InsertAsync(cancellationToken);

                    // user in company
                    await db.GetTable <DbCompanyUser>()
                    .Value(x => x.CompanyUid, companyUid)
                    .Value(x => x.UserUid, userUid)
                    .InsertAsync(cancellationToken);
                }

                // insert fields
                // todo: exclude db fields and sections
                await _fieldDataRepository.Insert(manageFieldDataRequest, cancellationToken);

                // todo: user roles

                // company registration request + todo: creation date
                var document = new Document
                {
                    Uid             = documentUid,
                    DocumentTypeUid = documentType.Uid.Value,
                    CompanyUid      = companyUid,
                    StatusCode      = DocumentStatusCode.Published,
                    Direction       = DocumentDirection.Outgoing,
                    DocumentDate    = now,
                    // Name = $"Company {company.Name} registration request"
                };

                await _documentRepository.Create(document, cancellationToken);

                // todo: audit log for company and for document
                await _auditLogService.Save(new AuditEvent
                {
                    EntityTypeCode = Company.EntityTypeCode,
                    EntityUid      = companyUid,
                    CompanyUid     = companyUid,
                    UserUid        = userUid,
                    CreatedAtUtc   = now,
                    MessageCode    = ExpressionHelper.GetFullName <CreateCompany.Resources>(x => x.CompanyCreated)
                }, cancellationToken);

                // todo: auto-approve request, notifications
                _jobManager.Enqueue <ISender>(x => x.Send(new RunAutomations
                {
                    EntityTypeCode = DocumentType.EntityTypeCode,
                    EntityTypeUid  = documentType.Uid.Value,
                    EntityUid      = documentUid
                }, cancellationToken));

                scope.Commit();

                return(new ApiResult {
                    Uid = companyUid
                });
            }
        }
Exemplo n.º 13
0
 public DiscordGuildAvailableConsumer(IUnitOfWorkFactory factory, DiscordShardedClient client, IBusControl bus)
 {
     _work   = factory.Create();
     _client = client;
     _bus    = bus;
 }
Exemplo n.º 14
0
 public BlockController(ISystemController systemController,
                        IUnitOfWorkFactory unitOfWorkFactory)
 {
     _unitOfWork       = unitOfWorkFactory.Create();
     _systemController = systemController;
 }
 private static void TestFactoryCreate(IUnitOfWorkFactory uowFactory)
 {
     Assert.NotNull(uowFactory.Create());
     Assert.NotNull(uowFactory.CreateInstance <UnitOfWork>());
 }
        public async Task Process(INetworkMessage message, GameNetworkContext context)
        {
            if (await context.FaultyState(GameState.Online))
            {
                return;
            }
            if (message is ShopPurchaseRequest shopRequest)
            {
                int goldCost = 0, apCost = 0, charmCost = 0, newCharacters = 0;
                var result = ValidatePurchase(context, shopRequest, ref goldCost, ref apCost, ref charmCost, ref newCharacters);
                if (result == ShopPurchaseResponse.ShopPurchaseResult.Success)
                {
                    if (!context.HasGold(goldCost))
                    {
                        result = ShopPurchaseResponse.ShopPurchaseResult.NeedMoreGold;
                    }
                    else if (!context.HasAp(apCost))
                    {
                        result = ShopPurchaseResponse.ShopPurchaseResult.NeedMoreAp;
                    }
                    else if (!context.HasCharm(charmCost))
                    {
                        result = ShopPurchaseResponse.ShopPurchaseResult.NotEnoughCharmPoints;
                    }
                    if (newCharacters > 0)
                    {
                        await using (var uow = _unitOfWorkFactory.Create())
                        {
                            var currentCount = await uow.Characters.Where(p => p.AccountId == context.Character.AccountId).CountAsync();

                            if (newCharacters + currentCount > MaxCharacters)
                            {
                                result = ShopPurchaseResponse.ShopPurchaseResult.CharacterLimit;
                            }
                        }
                    }
                }

                var newItems = new List <Item>();
                if (result == ShopPurchaseResponse.ShopPurchaseResult.Success)
                {
                    if (!await context.AddCurrency(-goldCost, -apCost, -charmCost))
                    {
                        result = ShopPurchaseResponse.ShopPurchaseResult.CashInfoFailed;
                    }
                    else
                    {
                        await using (var uow = _unitOfWorkFactory.Create())
                        {
                            foreach (var purchaseItem in shopRequest.Items)
                            {
                                if (_shopItemDataStore.TryGetValue(purchaseItem.Index, out ShopItem shopItem))
                                {
                                    if (shopItem.GoldBack > 0)
                                    {
                                        await context.AddGold(shopItem.GoldBack);
                                    }
                                    if (shopItem.Item1 != 0) // set
                                    {
                                        int characterId = context.Character.Id;
                                        if (!shopItem.Hero.IsStrict(HeroType.All))
                                        {
                                            var character = await _characterBuilder.Create(context.Character.AccountId, shopItem.Hero);

                                            characterId = character.Id;
                                        }

                                        foreach (var index in shopItem.Items)
                                        {
                                            var item = new Item()
                                            {
                                                CharacterId  = characterId,
                                                CategoryType = ShopCategoryType.Parts,
                                                Index        = index,
                                                UseType      = shopItem.UseType,
                                                Quantity     = 1,
                                            };
                                            uow.Items.Add(item);
                                            if (characterId == context.Character.Id)
                                            {
                                                newItems.Add(item);
                                            }
                                        }
                                    }
                                    else
                                    {
                                        var item = context.Items.FirstOrDefault(p => p.Index == shopItem.Item0);
                                        if (item == null)
                                        {
                                            item = new Item()
                                            {
                                                CharacterId  = context.Character.Id,
                                                CategoryType = shopItem.CategoryType,
                                                Index        = shopItem.Item0,
                                                UseType      = shopItem.UseType
                                            };
                                            uow.Items.Add(item);
                                            context.Items.Add(item);
                                        }
                                        else
                                        {
                                            uow.Attach(item);
                                        }
                                        if (purchaseItem.Option == 0)
                                        {
                                            item.Quantity += shopItem.Use0 == 0 ? 1 : shopItem.Use0;
                                        }
                                        else if (purchaseItem.Option == 1)
                                        {
                                            item.Quantity += shopItem.Use1;
                                        }
                                        else if (purchaseItem.Option == 2)
                                        {
                                            item.Quantity += shopItem.Use2;
                                        }
                                        if (shopItem.UseType == ItemUseType.Time)
                                        {
                                            item.ExpirationDate = DateTime.UtcNow.AddDays(item.Quantity);
                                        }
                                    }
                                }
                            }
                            await uow.CommitAsync();
                        }
                    }
                }

                await context.SendAsync(new ShopPurchaseResponse()
                {
                    Result = result,
                    Items  = newItems
                });

                if (result == ShopPurchaseResponse.ShopPurchaseResult.Success)
                {
                    await context.SendAsync(new SynchronizeCurrencyResponse()
                    {
                        Ap   = context.Ap,
                        Gold = context.Gold
                    });
                }
            }
        }
Exemplo n.º 17
0
 public PersonService(IUnitOfWorkFactory uowFactory, IAuthenticationService authService)
 {
     _uow         = uowFactory.Create();
     _authService = authService;
 }
Exemplo n.º 18
0
 public AddImageToPostHandler(IUnitOfWorkFactory unitOfWorkFactory, ICloudinaryService cloudinary)
 {
     _cloudinary = cloudinary;
     _unitOfWork = unitOfWorkFactory.Create();
 }
 public WebPageConnectionsController(IUnitOfWorkFactory unitOfWorkFactory)
 {
     _unitOfWork = unitOfWorkFactory.Create();
 }
 public async Task <Character> Create(Func <Character, Task <Character> > builder)
 {
     await using (var uow = _unitOfWorkFactory.Create())
         return(await Create(uow, builder));
 }
        public async Task EditCustomerProfile(string email, CustomerDto customerDto)
        {
            var user = await _userManager.FindByEmailAsync(email);

            using (IUnitOfWork unitOfWork = _unitOfWorkFactory.Create())
            {
                IRepository <Customer> repository = unitOfWork.Repository <Customer>();
                var customer = repository.Get(user.Id);

                _iMapper.Map <CustomerDto, Customer>(customerDto, customer);

                await unitOfWork.SaveAsync();
            }
        }
Exemplo n.º 22
0
 public DepartmentController(IUnitOfWorkFactory unitOfWorkFactory)
 {
     m_unitOfWork = unitOfWorkFactory.Create();
 }
Exemplo n.º 23
0
        public IHttpActionResult CreateVendor(CreateVendorModel model)
        {
            var enSaltKey  = _encryptionService.CreateSaltKey(4);
            var enPassword = _encryptionService.CreatePasswordHash(model.Password, enSaltKey);

            if (model == null)
            {
                return(NotFound());
            }
            Vendor vendor = new Vendor()
            {
                Email      = model.Email,
                Mobile     = model.Mobile,
                Name       = model.Name,
                Membership = new Membership()
                {
                    PasswordSalt = enSaltKey,
                    Password     = enPassword,
                    UserName     = model.Email,
                    CreatedOn    = DateTime.Now,
                    Role         = _roleRepository.First(new Specification <Role>(r => r.Name == "Vendor"))
                }
            };

            using (var uow = _unitOfWorkFactory.Create())
            {
                _vendorRepository.Add(vendor);
            }
            return(Ok(vendor));
        }
Exemplo n.º 24
0
 public SubTaskService(IUnitOfWorkFactory factory)
 {
     _unitOfWork = factory.Create();
     _taskRepository = _unitOfWork.Repository<Task>();
     _repository = _unitOfWork.Repository<SubTask>();
 }
Exemplo n.º 25
0
 protected IUnitOfWork NewUnitOfWork(UnitOfWorkMode mode = UnitOfWorkMode.ReadOnly)
 {
     return(_unitOfWorkFactory.Create(mode));
 }
        public void SetUpContext()
        {
            ResetUnitOfWork();

            _factory = _mocks.DynamicMock<IUnitOfWorkFactory>();
            _unitOfWork = _mocks.DynamicMock<IUnitOfWork>();
            _session = _mocks.DynamicMock<ISession>();

            //var fieldInfo = typeof(UnitOfWork).GetField("_innerUnitOfWork",
            //    BindingFlags.Static | BindingFlags.SetField | BindingFlags.NonPublic);
            //fieldInfo.SetValue(null, null);
            InstrumentUnitOfWork();

            _mocks.BackToRecordAll();
            SetupResult.For(_factory.Create(dbKey)).Return(_unitOfWork);
            SetupResult.For(_factory.GetCurrentSession(dbKey)).Return(_session);
            SetupResult.For(_unitOfWork.DatabaseKey).Return(dbKey);
            _mocks.ReplayAll();
        }
Exemplo n.º 27
0
 public GetDreamHandler(IUnitOfWorkFactory unitOfWorkFactory)
 {
     _unitOfWork = unitOfWorkFactory.Create();
 }
Exemplo n.º 28
0
 public async Task <tbl_ipos_appraiseditem> FindById(int id)
 {
     try
     {
         using (var uow = _unitOfWorkFactory.Create())
         {
             return(await uow.AppraisedItemRepository.FindAsync(id));
         }
     }
     catch (Exception ex)
     {
         throw new Exception(ex.Message);
     }
 }
Exemplo n.º 29
0
        private static INHibernateUnitOfWork CreateUnitOfWork()
        {
            var unitOfWork = unitOfWorkFactory.Create();

            return((INHibernateUnitOfWork)unitOfWork);
        }
 public async Task Initialize()
 {
     await using (var uow = _unitOfWorkFactory.Create())
         _gameServer = await uow.GameServers.Where(p => p.Name == _options.GameServer.Name).FirstAsync();
 }
Exemplo n.º 31
0
        public void Test_Factory_ReturnInstance_WithoutError()
        {
            Action createInstance = () => _unitOfWorkFactory.Create(_connectionFactory);

            createInstance.Should().NotThrow();
        }