public async Task <IActionResult> PutEventCaseDefinition(Guid id, EventCaseDefinition eventCaseDefinition)
        {
            if (id != eventCaseDefinition.UidCase)
            {
                return(BadRequest());
            }

            _context.Entry(eventCaseDefinition).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!EventCaseDefinitionExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
        /// <summary>
        /// Gets the <see cref="SwitchCaseDefinition"/> with the specified name
        /// </summary>
        /// <param name="state">The <see cref="SwitchStateDefinition"/> to search for the <see cref="SwitchCaseDefinition"/> with the specified name</param>
        /// <param name="caseName">The name of the <see cref="SwitchCaseDefinition"/> to get</param>
        /// <returns>The <see cref="SwitchCaseDefinition"/> with the specified name</returns>
        public static SwitchCaseDefinition?GetCase(this SwitchStateDefinition state, string caseName)
        {
            SwitchCaseDefinition @case;

            switch (state.SwitchType)
            {
            case SwitchStateType.Data:
                if (caseName == "default")
                {
                    @case = new DataCaseDefinition()
                    {
                        Name = "default", Transition = state.DefaultCondition.Transition, End = state.DefaultCondition.End
                    }
                }
                ;
                else
                {
                    @case = state.DataConditions.Single(c => c.Name == caseName);
                }
                break;

            case SwitchStateType.Event:
                if (caseName == "default")
                {
                    @case = new EventCaseDefinition()
                    {
                        Name = "default", Transition = state.DefaultCondition.Transition, End = state.DefaultCondition.End
                    }
                }
                ;
                else
                {
                    @case = state.EventConditions.Single(c => c.Name == caseName);
                }
                break;

            default:
                throw new NotSupportedException($"The specified switch state type '{state.SwitchType}' is not supported in this context");
            }
            return(@case);
        }
 /// <summary>
 /// Attempts to get the <see cref="EventCaseDefinition"/> that applies to the specified event
 /// </summary>
 /// <param name="state">The <see cref="SwitchStateDefinition"/> to search for the specified <see cref="EventCaseDefinition"/></param>
 /// <param name="eventReference">The reference of the event the <see cref="EventCaseDefinition"/> to get applies to</param>
 /// <param name="case">The <see cref="EventCaseDefinition"/> that applies to the specified event</param>
 /// <returns>A boolean indicating whether or not a <see cref="EventCaseDefinition"/> with the specified id could be found</returns>
 public static bool TryGetEventCondition(this SwitchStateDefinition state, string eventReference, out EventCaseDefinition @case)
 {
     @case = null !;
     try
     {
         @case = state.GetEventCondition(eventReference) !;
     }
     catch
     {
         return(false);
     }
     return(@case != null);
 }
        public async Task <ActionResult <EventCaseDefinition> > PostEventCaseDefinition(EventCaseDefinition eventCaseDefinition)
        {
            _context.EventCaseDefinition.Add(eventCaseDefinition);
            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateException)
            {
                if (EventCaseDefinitionExists(eventCaseDefinition.UidCase))
                {
                    return(Conflict());
                }
                else
                {
                    throw;
                }
            }

            return(CreatedAtAction("GetEventCaseDefinition", new { id = eventCaseDefinition.UidCase }, eventCaseDefinition));
        }