public IHttpActionResult Post(CreateEventsRequest request) { if (ModelState.IsValid == false) { return(BadRequest(ModelState)); } return(Ok(_service.InsertEvents(request.Events))); }
/// <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); }
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))); } }
/// <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); } }