Exemplo n.º 1
0
        public async Task <IActionResult> CreateLicence([FromBody] LicenseCreationDto licenseCreation)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var driverId = User.Claims.FirstOrDefault(c => c.Type == Helpers.Constants.Strings.JwtClaimIdentifiers.DriverId)?.Value;

            var driver = _usersRepository.GetDriverById(Guid.Parse(driverId));

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

            if (driver?.DriverLicense != null)
            {
                var res = await _usersRepository.RemoveDriverLicense(driver.DriverLicense);

                if (!res)
                {
                    return(Conflict());
                }
            }

            DateTime licensedTo;
            DateTime licensedFrom;

            try
            {
                licensedFrom = new DateTime(licenseCreation.YearFrom, licenseCreation.MonthFrom, licenseCreation.DayFrom);
                licensedTo   = new DateTime(licenseCreation.YearTo, licenseCreation.MonthTo, licenseCreation.DayTo);
            }
            catch
            {
                return(BadRequest());
            }

            if (licensedFrom > licensedTo)
            {
                return(BadRequest());
            }
            var license = new DriverLicense()
            {
                DriverId     = Guid.Parse(driverId),
                LicensedTo   = licensedTo,
                LicensedFrom = licensedFrom
            };
            var addres = await _usersRepository.AddDriverLicense(license);

            if (!addres)
            {
                return(Conflict());
            }

            return(NoContent());
        }