Click here to Skip to main content
15,886,724 members
Home / Discussions / C#
   

C#

 
GeneralRe: OData InvalidOperationException. Bad Request - Error in query syntax Pin
Eddy Vluggen27-Mar-19 4:15
professionalEddy Vluggen27-Mar-19 4:15 
GeneralRe: OData InvalidOperationException. Bad Request - Error in query syntax Pin
Richard MacCutchan27-Mar-19 4:33
mveRichard MacCutchan27-Mar-19 4:33 
GeneralRe: OData InvalidOperationException. Bad Request - Error in query syntax Pin
Eddy Vluggen27-Mar-19 4:38
professionalEddy Vluggen27-Mar-19 4:38 
GeneralRe: OData InvalidOperationException. Bad Request - Error in query syntax Pin
Richard MacCutchan27-Mar-19 5:05
mveRichard MacCutchan27-Mar-19 5:05 
GeneralRe: OData InvalidOperationException. Bad Request - Error in query syntax Pin
Eddy Vluggen27-Mar-19 5:31
professionalEddy Vluggen27-Mar-19 5:31 
GeneralRe: OData InvalidOperationException. Bad Request - Error in query syntax Pin
Gerry Schmitz27-Mar-19 6:16
mveGerry Schmitz27-Mar-19 6:16 
AnswerRe: OData InvalidOperationException. Bad Request - Error in query syntax Pin
dan!sh 27-Mar-19 3:58
professional dan!sh 27-Mar-19 3:58 
GeneralRe: OData InvalidOperationException. Bad Request - Error in query syntax Pin
Bastien Vandamme28-Mar-19 15:01
Bastien Vandamme28-Mar-19 15:01 
All my other routes are working fine. GelAll is working, Post is working. I don't get it. Controller name is Classes. Only route that include the key of Booking are not working. What is the logic behind this?
using Microsoft.AspNet.OData;
using Microsoft.AspNet.OData.Routing;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Oyg.Domain.DataTypes;
using System;
using System.Linq;
using System.Threading.Tasks;

namespace Oyg.Api.Controllers
{
    public partial class ClassesController : ODataController
    {
        /// <summary>
        /// Get all bookings. Get the class reservation queue.
        /// </summary>
        /// <returns></returns> 
        [HttpGet]
        [ODataRoute("Classes({classId})/Bookings")]
        public async Task<IActionResult> GetBookings([FromODataUri] Guid classId)
        {
            return Ok(await _context.Bookings
                .Where(y => y.Class.Id == classId)
                .ToListAsync());
        }

        /// <summary>
        /// Get a specific booking
        /// </summary>
        /// <returns></returns>
        [HttpGet]
        [ODataRoute("Classes({classId})/Bookings({bookingId})")]
        public async Task<IActionResult> GetBooking([FromODataUri] Guid classId, [FromODataUri] Guid bookingId)
        {
            var @class = await _context.Classes.FirstOrDefaultAsync(y => y.Id == classId);

            if (@class == null)
            {
                return NotFound();
            }

            var booking = _context.Bookings.Where(y => y.Class.Id == classId && y.Id == bookingId);

            if (!booking.Any())
            {
                return NotFound();
            }

            return Ok(SingleResult.Create(booking));
        }

        /// <summary>
        /// Add a booking reservation in a class
        /// </summary>
        /// <param name="class"></param>
        /// <returns></returns>
        [HttpPost]
        [ODataRoute("Classes({classKey})/Bookings")]
        public async Task<IActionResult> PostBooking([FromODataUri] Guid classKey, [FromBody] Booking booking)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            var @class = _context.Classes
                .FindAsync(classKey);

            if (@class == null)
            {
                return NotFound();
            }

            booking.Id = Guid.NewGuid();
            booking.Position = _context.Bookings.Where(y => y.Class.Id == classKey).Count();
            booking.ReservationTime = DateTime.UtcNow;

            _context.Bookings.Add(booking);
            await _context.SaveChangesAsync();
            return Created(booking);
        }

        ///// <summary>
        ///// DELETE: api/Classes/5
        ///// </summary>
        ///// <param name="id"></param>
        ///// <returns></returns>
        //[HttpDelete()]
        //[ODataRoute("Classes({classKey})/Bookings({key})")]
        //public async Task<IActionResult> DeleteBooking([FromODataUri] Guid classKey, [FromODataUri] Guid key)
        //{
        //    var @class = await _context.Classes.FindAsync(classKey);

        //    if (@class == null)
        //    {
        //        return NotFound();
        //    }

        //    var booking = await _context.Bookings.FindAsync(key);

        //    if (booking == null)
        //    {
        //        return NotFound();
        //    }

        //    booking.CancelTime = DateTime.UtcNow;
        //    await _context.SaveChangesAsync();

        //    return Ok(@class);
        //}

        [HttpPost]
        [ODataRoute("Classes({classKey})/Oyg.Actions.Register")]
        public async Task<IActionResult> Register([FromODataUri] Guid classKey, ODataActionParameters parameters)
        {
            var @class = await _context.Classes.FindAsync(classKey);

            if (@class == null)
            {
                return NotFound();
            }

            if (!parameters.TryGetValue("studentId", out object outputFromDictionary))
            {
                return NotFound();
            }

            if (!Guid.TryParse(outputFromDictionary.ToString(), out Guid studentId))
            {
                return NotFound();
            }

            // the student must exist
            var student = await _context.Students.FirstOrDefaultAsync(y => y.Id == studentId);

            if (student == null)
            {
                return NotFound();
            }

            var booking = new Booking()
            {
                Id = Guid.NewGuid(),
                Class = @class,
                Student = student,
                Position = _context.Bookings.Where(y => y.Class.Id == classKey).Count(),
                ReservationTime = DateTime.UtcNow
            };

            _context.Bookings.Add(booking);
            await _context.SaveChangesAsync();
            // return true
            return Ok(booking);
        }

        [HttpPost]
        [ODataRoute("Classes({classKey})/Oyg.Actions.CancelRegistration")]
        public async Task<IActionResult> CancelRegistration([FromODataUri] int classKey, ODataActionParameters parameters)
        {
            var @class = await _context.Classes.FindAsync(classKey);

            if (@class == null)
            {
                return NotFound();
            }

            if (!parameters.TryGetValue("studentId", out object outputFromDictionary))
            {
                return NotFound();
            }

            if (!Guid.TryParse(outputFromDictionary.ToString(), out Guid studentId))
            {
                return NotFound();
            }

            // the student must exist
            var student = _context.Students.FirstOrDefault(y => y.Id == studentId);

            if (student == null)
            {
                return NotFound();
            }

            var booking = await _context.Bookings.SingleOrDefaultAsync(y => y.Class.Id == @class.Id &&
                y.Student.Id == student.Id && y.CancelTime == null);

            if (booking == null)
            {
                return NotFound();
            }

            booking.CancelTime = DateTime.UtcNow;
            await _context.SaveChangesAsync();

            return NoContent();
        }
    }
}

QuestionRestore fingerprint data for timekeeper Ronald jack x628-C ? Pin
Member 245846725-Mar-19 16:30
Member 245846725-Mar-19 16:30 
AnswerRe: Restore fingerprint data for timekeeper Ronald jack x628-C ? Pin
Pete O'Hanlon25-Mar-19 21:42
mvePete O'Hanlon25-Mar-19 21:42 
GeneralRe: Restore fingerprint data for timekeeper Ronald jack x628-C ? Pin
Member 245846726-Mar-19 16:28
Member 245846726-Mar-19 16:28 
AnswerRe: Restore fingerprint data for timekeeper Ronald jack x628-C ? Pin
OriginalGriff26-Mar-19 21:24
mveOriginalGriff26-Mar-19 21:24 
AnswerRe: Restore fingerprint data for timekeeper Ronald jack x628-C ? Pin
OriginalGriff25-Mar-19 22:54
mveOriginalGriff25-Mar-19 22:54 
QuestionExport from DataGridView to access _ c# Pin
Member 1419439024-Mar-19 12:15
Member 1419439024-Mar-19 12:15 
AnswerRe: Export from DataGridView to access _ c# Pin
josda100024-Mar-19 15:41
josda100024-Mar-19 15:41 
AnswerRe: Export from DataGridView to access _ c# Pin
OriginalGriff24-Mar-19 21:10
mveOriginalGriff24-Mar-19 21:10 
GeneralRe: Export from DataGridView to access _ c# Pin
Member 1419439024-Mar-19 22:11
Member 1419439024-Mar-19 22:11 
GeneralRe: Export from DataGridView to access _ c# Pin
OriginalGriff24-Mar-19 22:40
mveOriginalGriff24-Mar-19 22:40 
QuestionQuestion about login form with access database Pin
Member 1114879324-Mar-19 1:42
Member 1114879324-Mar-19 1:42 
AnswerRe: Question about login form with access database Pin
OriginalGriff24-Mar-19 2:03
mveOriginalGriff24-Mar-19 2:03 
QuestionMessage Removed Pin
23-Mar-19 12:08
Member 1419354023-Mar-19 12:08 
QuestionCzytanie z drukarki Posnet / Receive Posnet POS printer answer Pin
OraToraCora21-Mar-19 13:24
OraToraCora21-Mar-19 13:24 
AnswerRe: Czytanie z drukarki Posnet / Receive Posnet POS printer answer Pin
Luc Pattyn21-Mar-19 15:37
sitebuilderLuc Pattyn21-Mar-19 15:37 
GeneralRe: Czytanie z drukarki Posnet / Receive Posnet POS printer answer Pin
glennPattonWork325-Mar-19 6:39
professionalglennPattonWork325-Mar-19 6:39 
QuestionDecimal values input validation Pin
Rap Gutierrez21-Mar-19 2:31
professionalRap Gutierrez21-Mar-19 2:31 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.