Example #1
0
 public IHttpActionResult Post(CreateEventsRequest request)
 {
     if (ModelState.IsValid == false)
     {
         return(BadRequest(ModelState));
     }
     return(Ok(_service.InsertEvents(request.Events)));
 }
Example #2
0
        /// <summary>
        /// 上报事件
        /// </summary>
        public CreateEventsResponse CreateEvents(CreateEventsRequest createEventsRequest)
        {
            Dictionary <string, string> urlParam      = new Dictionary <string, string>();
            string               urlPath              = HttpUtils.AddUrlPath("/V1.0/{project_id}/events", urlParam);
            SdkRequest           request              = HttpUtils.InitSdkRequest(urlPath, "application/json;charset=UTF-8", createEventsRequest);
            SdkResponse          response             = DoHttpRequest("POST", request);
            CreateEventsResponse createEventsResponse = JsonUtils.DeSerializeNull <CreateEventsResponse>(response);

            createEventsResponse.Body = JsonUtils.DeSerializeList <CreateEventsResponseBody>(response);
            return(createEventsResponse);
        }
        /// <summary>
        /// 上报事件
        /// </summary>
        public async Task <CreateEventsResponse> CreateEventsAsync(CreateEventsRequest createEventsRequest)
        {
            Dictionary <string, string> urlParam = new Dictionary <string, string>();
            string              urlPath          = HttpUtils.AddUrlPath("/V1.0/{project_id}/events", urlParam);
            SdkRequest          request          = HttpUtils.InitSdkRequest(urlPath, "application/json", createEventsRequest);
            HttpResponseMessage response         = await DoHttpRequestAsync("POST", request);

            CreateEventsResponse createEventsResponse = JsonUtils.DeSerializeNull <CreateEventsResponse>(response);

            createEventsResponse.Body = JsonUtils.DeSerializeList <CreateEventsResponseBody>(response);
            return(createEventsResponse);
        }
Example #4
0
        public HttpResponseMessage CreateEvent(CreateEventsRequest request)
        {
            try
            {
                //Authenticate API key
                long?hostId = HostServices.GetCallerHostId();
                if (!hostId.HasValue)
                {
                    Log.Warn(ResponseMessages.InvalidAPIKey);
                    return(Request.CreateResponse(new GenericResponse(null, ResponseCodes.InvalidAPIKey, ResponseMessages.InvalidAPIKey)));
                }

                //Validate input
                if (request == null ||
                    string.IsNullOrEmpty(request.ReferenceId) ||
                    string.IsNullOrEmpty(request.Title) ||
                    !request.StartDate.HasValue ||
                    request.Tiers == null ||
                    request.Tiers.Count == 0)
                {
                    return(Request.CreateResponse(new GenericResponse(null, ResponseCodes.InvalidParam, ResponseMessages.InvalidParam)));
                }

                //Validate input length
                if (request.ReferenceId.Length > 30)
                {
                    return(Request.CreateResponse(new GenericResponse(null, ResponseCodes.InvalidParam, "Reference ID (max 30 length) is too long.")));
                }
                if (request.Title.Length > 200 || request.Description.Length > 500)
                {
                    return(Request.CreateResponse(new GenericResponse(null, ResponseCodes.InvalidParam, "Title (max 200 length) or Description (max 500 length) is too long.")));
                }
                if (request.Tiers.Count > 10)
                {
                    return(Request.CreateResponse(new GenericResponse(null, ResponseCodes.InvalidParam, "Only a maximum of 10 tiers allowed.")));
                }

                //Ensure that start date is in future
                if (DateTime.UtcNow.Date > request.StartDate.Value)
                {
                    return(Request.CreateResponse(new GenericResponse(null, ResponseCodes.InvalidParam, "Event start date must be a future date.")));
                }

                //Validate event reference ID
                IdentityServices identityService = new IdentityServices();
                if (identityService.IsRefIdExists(IdentityServices.RefIdTypes.Event, hostId.Value, request.ReferenceId))
                {
                    return(Request.CreateResponse(new GenericResponse(null, ResponseCodes.DuplicateRefId, ResponseMessages.DuplicateRefId + " (Event " + request.ReferenceId + ")")));
                }
                //Validate event tier reference ID and input length
                foreach (var tier in request.Tiers)
                {
                    if (tier.ReferenceId.Length > 30)
                    {
                        return(Request.CreateResponse(new GenericResponse(null, ResponseCodes.InvalidParam, "Reference ID (max 30 length) is too long.")));
                    }
                    if (identityService.IsRefIdExists(IdentityServices.RefIdTypes.EventTier, hostId.Value, tier.ReferenceId))
                    {
                        return(Request.CreateResponse(new GenericResponse(null, ResponseCodes.DuplicateRefId, ResponseMessages.DuplicateRefId + " (Tier " + tier.ReferenceId + ")")));
                    }
                    if (tier.Title.Length > 200)
                    {
                        return(Request.CreateResponse(new GenericResponse(null, ResponseCodes.InvalidParam, "Tier Title (max 200 length) is too long.")));
                    }
                }

                //Perform transaction
                EventsServices eventsService = new EventsServices();
                eventsService.CreateEvent(hostId.Value, request);

                //Send response
                return(Request.CreateResponse(new GenericResponse(null, ResponseCodes.Success, ResponseMessages.Success)));
            }
            catch (Exception ex)
            {
                Log.Exception(ex);
                return(Request.CreateResponse(new GenericResponse(null, ResponseCodes.Error, ResponseMessages.Error)));
            }
        }
Example #5
0
        /// <summary>
        /// 上报自定义事件。
        /// </summary>
        /// <param name="cesClient"></param>
        private static void CreateEvents(CesClient cesClient)
        {
            CreateEventsRequest createEventsRequest = new CreateEventsRequest()
            {
                Body = new List <EventItem>()
                {
                    new EventItem()
                    {
                        EventName   = "ces_sdk_005",
                        EventSource = "SYS.ECS",
                        Time        = 1587017957000,
                        Detail      = new EventItemDetail()
                        {
                            Content = "The ECS alarm",
                            //GroupId = "rg15845342115453jqdPjrxA",
                            ResourceId   = "50596679-553d-4280-80a5-1919b117e4cc",
                            ResourceName = "ecs-agent-nodelete",
                            EventState   = EventItemDetail.EventStateEnum.NORMAL,
                            EventLevel   = EventItemDetail.EventLevelEnum.MAJOR,
                            EventUser    = "******"
                        }
                    },
                    new EventItem()
                    {
                        EventName   = "ces_sdk_006",
                        EventSource = "SYS.ECS",
                        Time        = 1587017957000,
                        Detail      = new EventItemDetail()
                        {
                            Content = "The ECS alarm",
                            //GroupId = "rg15845342115453jqdPjrxA",
                            ResourceId   = "326277f5-ee01-4751-959e-8e9a364b6b3c",
                            ResourceName = "ecs-zhanfan1129",
                            EventState   = EventItemDetail.EventStateEnum.NORMAL,
                            EventLevel   = EventItemDetail.EventLevelEnum.MAJOR,
                            EventUser    = "******"
                        }
                    }
                }
            };

            try
            {
                CreateEventsResponse createEventsResponse = cesClient.CreateEvents(createEventsRequest);
                foreach (var createEventsResponseBody in createEventsResponse.Body)
                {
                    Console.WriteLine(createEventsResponseBody.ToString());
                }
            }
            catch (RequestTimeoutException requestTimeoutException)
            {
                Console.WriteLine(requestTimeoutException.ErrorMessage);
            }
            catch (ServiceResponseException clientRequestException)
            {
                Console.WriteLine(clientRequestException.HttpStatusCode);
                Console.WriteLine(clientRequestException.ErrorCode);
                Console.WriteLine(clientRequestException.ErrorMsg);
            }
            catch (ConnectionException connectionException)
            {
                Console.WriteLine(connectionException.ErrorMessage);
            }
        }
        /// <summary>
        /// Inserts a new event record in the Events table.
        /// </summary>
        public void CreateEvent(long hostId, CreateEventsRequest value)
        {
            long          newEventId            = 0;
            List <string> eventTierUniqueIdList = new List <string>();

            //Generate address
            string eventUniqueId = HashUtility.GenerateHash();

            using (var context = new AnnoDBContext())
            {
                //Insert event to database
                var newEvent = new Events()
                {
                    host_id       = hostId,
                    ref_id        = value.ReferenceId,
                    title         = value.Title,
                    description   = value.Description,
                    start_date    = value.StartDate,
                    status        = "Active",
                    address       = eventUniqueId,
                    record_status = RecordStatuses.Pending,
                    created_date  = DateTime.UtcNow
                };
                context.Events.Add(newEvent);
                context.SaveChanges();

                //Get the ID of the newly created record
                newEventId = newEvent.event_id;

                //Insert event tiers to database
                foreach (var tier in value.Tiers)
                {
                    //Generate address
                    string eventTierUniqueId = HashUtility.GenerateHash();

                    //Insert event to database
                    var newEventTier = new EventsTier()
                    {
                        host_id           = hostId,
                        event_id          = newEventId,
                        ref_id            = tier.ReferenceId,
                        title             = tier.Title,
                        description       = tier.Description,
                        total_tickets     = tier.TotalTickets,
                        available_tickets = tier.TotalTickets, //available tickets is set to total tickets for initial insert
                        price             = Convert.ToDecimal(tier.Price),
                        status            = "Active",
                        address           = eventTierUniqueId,
                        record_status     = RecordStatuses.Live,
                        created_date      = DateTime.UtcNow
                    };
                    context.EventsTier.Add(newEventTier);
                    context.SaveChanges();

                    eventTierUniqueIdList.Add(eventTierUniqueId);
                }

                //Update event record status to live
                var record = context.Events.SingleOrDefault(x => x.event_id == newEventId);
                if (record != null)
                {
                    record.record_status = RecordStatuses.Live;
                    context.SaveChanges();
                }
            }

            //Create event wallet
            WalletServices walletServices = new WalletServices();

            walletServices.SaveWallet(newEventId, WalletOwnerTypes.Event, eventUniqueId);

            //Commit to blockchain
            IdentityServices identityServices = new IdentityServices();
            string           hostAddress      = identityServices.AddressOf(IdentityServices.AddressTypes.Host, hostId);

            ContractApi blockchainContract = new ContractApi();

            blockchainContract.CreateEvent(eventUniqueId, hostAddress, value.ReferenceId, value.Title, value.StartDate.Value, "Active");

            for (int i = 0; i < value.Tiers.Count; i++)
            {
                blockchainContract.CreateEventTier(
                    eventTierUniqueIdList[i], hostAddress, eventUniqueId, value.Tiers[i].ReferenceId, value.Tiers[i].Title,
                    value.Tiers[i].TotalTickets.Value, value.Tiers[i].TotalTickets.Value, value.Tiers[i].Price.Value);
            }
        }