示例#1
0
        private bool IsSharedOrOwned(ServiceData.Models.UserCondition cond)
        {
            if (cond.Owner.Email == User.Identity.Name)
            {
                return(true);
            }
            IReadWriteRepository <ServiceData.Models.Share> _shareRepository = new ShareRepository();

            return(_shareRepository.Search(s => s.UserCondition.Id == cond.Id &&
                                           s.SharedEmail == User.Identity.Name &&
                                           s.ExpireDate > DateTime.UtcNow).Any());
        }
示例#2
0
文件: RuleJob.cs 项目: adteven/alabo
        private void HandleQueueAsync(long tradeId, IScope scope)
        {
            var trade = scope.Resolve <ITradeService>().GetSingle(r => r.Id == tradeId);

            if (trade != null)
            {
                try {
                    if (trade.Status != ShareOrderStatus.Pending)
                    {
                        throw new MessageQueueHandleException(tradeId, "分润订单状态不是待处理状态");
                    }

                    var order = scope.Resolve <IShareRepository>().GetSingleNative(trade.Id);
                    if (order.Status != ShareOrderStatus.Pending)
                    {
                        throw new MessageQueueHandleException(tradeId, "分润订单状态不是待处理状态");
                    }

                    var moduleTypeArray = scope.Resolve <IRuleModuleService>().AllRuleType();
                    foreach (var type in moduleTypeArray)
                    {
                        RuleActuator actuator = new RuleActuator();
                        actuator.ExecuteTask(type, trade);
                    }

                    //更新成功
                    scope.Resolve <ITradeService>().Update(r => {
                        r.Status        = ShareOrderStatus.Handled;
                        r.ExecuteCount += 1;
                        r.UpdateTime    = DateTime.Now;
                    }, r => r.Id == trade.Id);
                    //原生数据库才插入一次
                    var             unitOfWork           = scope.Resolve <IUnitOfWork>();
                    ShareRepository shareOrderRepository = new ShareRepository(unitOfWork);
                    shareOrderRepository.SuccessOrder(trade.Id);
                } catch (Exception ex) {
                    scope.Resolve <IShareService>().AddMessage(ex.Message, trade);
                    scope.Resolve <ITradeService>().Update(r => {
                        r.Status      = ShareOrderStatus.Error;
                        r.UpdateTime  = DateTime.Now;
                        trade.Summary = ex.Message;
                    }, r => r.Id == trade.Id);
                }
            }
        }
示例#3
0
        // GET: Conditions
        public async Task <ActionResult> Index(int id)
        {
            await LoadViewBag();

            IReadWriteRepository <ServiceData.Models.UserCondition> _condRepository = new UserConditionsRepository();

            ServiceData.Models.UserCondition found = _condRepository.GetById(id);

            if (found == null)
            {
                return(new HttpNotFoundResult());
            }

            IReadWriteRepository <ServiceData.Models.Share> _shareRepository = new ShareRepository();

            ServiceData.Models.Share sh = _shareRepository.Search(s => s.UserCondition.Id == id &&
                                                                  s.SharedEmail == User.Identity.Name &&
                                                                  s.ExpireDate > DateTime.UtcNow).FirstOrDefault();

            if (found.Owner.Email != User.Identity.Name && sh == null)
            {
                return(new HttpUnauthorizedResult());
            }

            // Has been shared with the user (potentially themself but meh)
            if (sh != null)
            {
                sh.Updated = false;
                _shareRepository.Update(sh);

                ViewData["Title"] = string.Format("{0}'s {1}", found.Owner.Name, found.Condition);
            }
            else
            {
                ViewData["Title"] = found.Condition;
            }

            Models.UserCondition cond = Models.UserCondition.ToAppModel(found, true);

            ViewData["Condition"] = cond;

            return(View(cond.Photos));
        }
示例#4
0
        public void GetList_ShouldReturnCorrectShareCountTest()
        {
            // Arrange
            var builder = new DbContextOptionsBuilder <ExchangeContext>();

            builder.UseInMemoryDatabase(databaseName:
                                        "TestPortfolio4");

            var context = new ExchangeContext(builder.Options);

            InitDbContext(context);

            var repo = new ShareRepository(context);

            // Act
            var result = repo.Query();
            var count  = result.CountAsync();

            // Assert
            Assert.AreEqual(2, Convert.ToInt32(count.Result));
        }
示例#5
0
        // GET: Shares
        public async Task <ActionResult> Index()
        {
            await LoadViewBag();

            IReadWriteRepository <ServiceData.Models.Share> _shareRepository = new ShareRepository();

            List <ServiceData.Models.Share> found =
                _shareRepository.Search(sh => sh.SharedEmail == User.Identity.Name).ToList();
            List <Models.Share> toRet = new List <Models.Share>();

            foreach (ServiceData.Models.Share sh in found)
            {
                toRet.Add(Models.Share.ToAppModel(sh, true));
            }

            toRet = toRet.OrderByDescending(item =>
                                            item.UserCondition.Photos.OrderByDescending(p => p.CreatedAt).FirstOrDefault()?.CreatedAt).ToList();

            ViewData["Title"] = "Shared With Me";

            return(View(toRet));
        }
示例#6
0
        public void GetList_ShouldUpdateCorrectlyShareTest()
        {
            // Arrange
            var builder = new DbContextOptionsBuilder <ExchangeContext>();

            builder.UseInMemoryDatabase(databaseName:
                                        "TestPortfolio6");

            var context = new ExchangeContext(builder.Options);

            InitDbContext(context);

            var repo = new ShareRepository(context);
            var rate = Convert.ToDecimal(50.00);
            // Act
            var result = repo.UpdateAsync(new HourlyShareRate {
                Rate = rate, Symbol = "TES", TimeStamp = DateTime.Now
            });
            var count = result.IsCompleted;

            //// Assert
            Assert.IsNotNull(count);
            Assert.IsTrue(count);
        }
示例#7
0
文件: ShareJob.cs 项目: adteven/alabo
        private void HandleQueueAsync(ITaskActuator taskActuator, TaskManager taskManager, long queueId, IScope scope)
        {
            var shareOrder = scope.Resolve <ITradeService>().GetSingle(r => r.Id == queueId);

            if (shareOrder != null)
            {
                try
                {
                    if (shareOrder.Status != ShareOrderStatus.Pending)
                    {
                        throw new MessageQueueHandleException(queueId, "分润订单状态不是待处理状态");
                    }

                    var order = scope.Resolve <IShareRepository>().GetSingleNative(shareOrder.Id);
                    if (order.Status != ShareOrderStatus.Pending)
                    {
                        throw new MessageQueueHandleException(queueId, "分润订单状态不是待处理状态");
                    }

                    var moduleTypeArray = taskManager.GetModulePriceArray();
                    foreach (var type in moduleTypeArray)
                    {
                        if (shareOrder.TriggerType == TriggerType.Order)
                        {
                            //// 确认收货的时候,产生分润
                            //if (shareOrder.SystemStatus != ShareOrderSystemStatus.Pending)
                            //{
                            //    continue;
                            //}
                            taskActuator.ExecuteTask(type, shareOrder,
                                                     new { ShareOrderId = queueId, shareOrder.TriggerType, OrderId = shareOrder.EntityId });
                        }
                        //else {
                        //    taskActuator.ExecuteTask(type, shareOrder,
                        //        new { ShareOrderId = queueId, shareOrder.TriggerType, BaseFenRunAmount = shareOrder.Amount });
                        //}
                    }

                    //更新成功
                    scope.Resolve <ITradeService>().Update(r =>
                    {
                        r.Status        = ShareOrderStatus.Handled;
                        r.ExecuteCount += 1;
                        r.UpdateTime    = DateTime.Now;
                    }, r => r.Id == shareOrder.Id);
                    //原生数据库才插入一次
                    var             unitOfWork           = scope.Resolve <IUnitOfWork>();
                    ShareRepository shareOrderRepository = new ShareRepository(unitOfWork);
                    shareOrderRepository.SuccessOrder(shareOrder.Id);
                } catch (Exception ex)
                {
                    //处理失败
                    scope.Resolve <ITradeService>().Update(r =>
                    {
                        r.Status           = ShareOrderStatus.Error;
                        r.UpdateTime       = DateTime.Now;
                        shareOrder.Summary = ex.Message;
                    }, r => r.Id == shareOrder.Id);
                }
            }
        }
示例#8
0
 public ShareController(ShareRepository repo)
 {
     _db = repo;
 }
 public void Cleanup()
 {
     _context.Dispose();
     _context         = null;
     _shareRepository = null;
 }
 public void Initialize()
 {
     _context         = ContextFactory.CreateContext(true);
     _shareRepository = new ShareRepository(_context);
 }
 public void Initialize()
 {
     _exchangeContext      = new Mock <ExchangeContext>();
     _dbSetHourlyShareRate = new Mock <DbSet <HourlyShareRate> >();
     _shareRepository      = new ShareRepository(_exchangeContext.Object);
 }
 public InactivityMonitor() : base()
 {
     _logRepository   = new LogRepository();
     _urlRepository   = new UrlRepository();
     _shareRepository = new ShareRepository();
 }