public async Task <SimpleTradeInfo> InitiateTrade(string inputCoinType, decimal?amount)
        {
            _logger.LogInformation($"[InitiateTrade] Starting InitiateTrade with inputCoinType: {inputCoinType} and amount: {amount}");

            var now      = DateTime.UtcNow;
            var memoGuid = Guid.NewGuid().ToString();

            var r1 = await _blockTradeService.InitiateTrade(inputCoinType, _mappingTradingExchange[inputCoinType], "tst-ll-reception", memoGuid);

            _logger.LogInformation($"[InitiateTrade] Blocktrade reply: {JsonConvert.SerializeObject(r1, Formatting.Indented, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore })}");

            var objTrans = new Transactions();

            //if (amount.HasValue)
            //{
            //    objTrans.Amount = amount.Value;
            //}

            objTrans.Cryptoconfirmed = false;

            objTrans.Cryptoaddress  = r1.InputAddress;
            objTrans.Cryptocurrency = r1.InputCoinType;
            objTrans.Memobc         = memoGuid;

            objTrans.Modifiedby = "System";
            objTrans.Createdby  = "System";
            objTrans.Createdon  = now;
            objTrans.Modifiedon = now;

            await _transRepository.AddAsync(objTrans);

            var error1 = _unitOfWork.CommitHandled();

            if (!error1)
            {
                _logger.LogError($"Can't Add Transaction ! {JsonConvert.SerializeObject(error1, Formatting.Indented, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore })} ");
            }

            _logger.LogInformation($"[InitiateTrade] Transaction created in DB: {JsonConvert.SerializeObject(objTrans, Formatting.Indented, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore })}");

            var guidString = Guid.NewGuid().ToString();
            await _commonMessageService.SendMessage <ActionEventDefinition>("llc-event-broadcast", guidString,
                                                                            new ActionEventDefinition()
            {
                ActionName = "InitiateTradeTriggered",
                Message    = string.Format($"New participation initiated => {objTrans.Transactionid} => {r1.InputAddress}"),
                Timestamp  = DateTime.UtcNow,
                Success    = true,
                Reason     = "Subscription"
            });

            return(r1);
        }
Пример #2
0
        public async Task <Genericattribute> CreateOrGetAttribute(
            string type,
            string value,
            object typeObject  = null,
            object valueObject = null,
            int typeSort       = 0,
            int valueSort      = 0,
            int?categoryId     = null)
        {
            Check.Require(!string.IsNullOrWhiteSpace(type), "type must be supplied.");
            Check.Require(!string.IsNullOrWhiteSpace(value), "value must be supplied.");

            var utcNow = DateTime.UtcNow;

            var tupleTypeValue = await CreateOrGetTupleTypeValue(type, value, typeObject, valueObject, typeSort, valueSort, categoryId);

            var findAttribute = _attributeRepository.DbSet.FirstOrDefault(x => x.Genericattributetypeid == tupleTypeValue.Item1.Genericattributetypeid &&
                                                                          x.Genericattributevalueid == tupleTypeValue.Item2.Genericattributevalueid);

            if (findAttribute != null)
            {
                return(findAttribute);
            }

            var attribute = new Genericattribute();

            attribute.Genericattributetypeid  = tupleTypeValue.Item1.Genericattributetypeid;
            attribute.Genericattributevalueid = tupleTypeValue.Item2.Genericattributevalueid;

            attribute.Typestring  = type;
            attribute.Valuestring = value;

            attribute.Createdon  = utcNow;
            attribute.Modifiedon = utcNow;
            attribute.Createdby  = "System";
            attribute.Modifiedby = "System";

            JsonSerializerSettings settings = new JsonSerializerSettings()
            {
                TypeNameHandling = TypeNameHandling.All,
            };

            settings.Converters.Insert(0, new PrimitiveJsonConverter());

            if (typeObject != null)
            {
                attribute.Typelabelstring = JsonConvert.SerializeObject(typeObject, settings);
            }
            else
            {
                attribute.Typelabelstring = EncodeLabel(type);
            }

            if (valueObject != null)
            {
                attribute.Valuelabelstring = JsonConvert.SerializeObject(valueObject, settings);
            }
            else
            {
                attribute.Valuelabelstring = EncodeLabel(value);
            }

            await _attributeRepository.AddAsync(attribute);

            var error1 = _unitOfWork.CommitHandled();

            if (!error1)
            {
                _logger.LogError($"Can't Attribute ! {JsonConvert.SerializeObject(attribute, Formatting.Indented, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore })} ");
            }

            return(attribute);
        }