public async Task <IActionResult> DeleteShipOwner([FromRoute] int id)
 {
     repo.Delete(await repo.GetByIdToDelete(id));
     return(StatusCode(200, new {
         response = ApiMessages.RecordDeleted()
     }));
 }
Example #2
0
 public IActionResult DeleteRangeSchedule([FromBody] List <ScheduleDeleteRangeDto> schedules)
 {
     repo.DeleteRange(schedules);
     return(StatusCode(200, new {
         response = ApiMessages.RecordDeleted()
     }));
 }
 public IActionResult AssignToShip(int shipId, [FromQuery(Name = "id")] string[] ids)
 {
     reservationRepo.AssignToShip(shipId, ids);
     return(StatusCode(200, new {
         response = ApiMessages.RecordUpdated()
     }));
 }
        public async Task <IActionResult> Register([FromBody] RegisterViewModel formData)
        {
            if (ModelState.IsValid)
            {
                var user = new UserExtended {
                    UserName       = formData.UserName,
                    Displayname    = formData.Displayname,
                    CustomerId     = formData.CustomerId,
                    Email          = formData.Email,
                    IsAdmin        = formData.IsAdmin,
                    IsActive       = formData.IsActive,
                    EmailConfirmed = true,
                    SecurityStamp  = Guid.NewGuid().ToString()
                };
                var result = await userManager.CreateAsync(user, formData.Password);

                if (result.Succeeded)
                {
                    await userManager.AddToRoleAsync(user, user.IsAdmin? "Admin" : "User");

                    return(StatusCode(200, new {
                        response = ApiMessages.RecordCreated()
                    }));
                }
                else
                {
                    return(StatusCode(492, new { response = result.Errors.Select(x => x.Description) }));
                }
            }
            return(StatusCode(400, new { response = ModelState.Values.SelectMany(x => x.Errors).Select(x => x.ErrorMessage) }));
        }
 public IActionResult SendToEmail([FromBody] VoucherEmail voucher)
 {
     if (ModelState.IsValid)
     {
         try {
             var response = emailSender.SendVoucher(voucher).Message;
             if (response == "OK")
             {
                 return(StatusCode(200, new {
                     response = ApiMessages.EmailInstructions()
                 }));
             }
             else
             {
                 throw new Exception(response);
             }
         } catch (Exception) {
             return(StatusCode(493, new {
                 response = ApiMessages.EmailNotSent()
             }));
         }
     }
     return(StatusCode(400, new {
         response = ModelState.Values.SelectMany(x => x.Errors).Select(x => x.ErrorMessage)
     }));
 }
Example #6
0
 private IActionResult GetErrorMessage(int errorCode)
 {
     return(errorCode switch {
         450 => StatusCode(450, new { response = ApiMessages.FKNotFoundOrInactive("Destination Id") }),
         451 => StatusCode(451, new { response = ApiMessages.FKNotFoundOrInactive("Port Id") }),
         _ => StatusCode(490, new { Response = ApiMessages.RecordNotSaved() }),
     });
Example #7
0
        public async Task <IActionResult> GetUser(string id)
        {
            UserExtended record = await userManager.Users
                                  .Include(x => x.Customer)
                                  .DefaultIfEmpty()
                                  .SingleOrDefaultAsync(x => x.Id == id);

            if (record == null)
            {
                return(StatusCode(404, new {
                    response = ApiMessages.RecordNotFound()
                }));
            }
            UserReadResource vm = new() {
                Id          = record.Id,
                UserName    = record.UserName,
                Displayname = record.Displayname,
                Customer    = new SimpleResource {
                    Id          = (record.Customer?.Id) ?? 0,
                    Description = (record.Customer?.Description) ?? "(EMPTY)"
                },
                Email    = record.Email,
                IsAdmin  = record.IsAdmin,
                IsActive = record.IsActive
            };

            return(StatusCode(200, vm));
        }
 public async Task <IActionResult> PostCustomerAsync([FromBody] CustomerWriteResource record)
 {
     repo.Create(mapper.Map <CustomerWriteResource, Customer>(await AttachUserIdToRecord(record)));
     return(StatusCode(200, new {
         response = ApiMessages.RecordCreated()
     }));
 }
 public async Task <IActionResult> DeleteReservation([FromRoute] string id)
 {
     reservationRepo.Delete(await reservationRepo.GetByIdToDelete(id));
     return(StatusCode(200, new {
         response = ApiMessages.RecordDeleted()
     }));
 }
        public async Task <IActionResult> Create([FromBody] Voucher voucher)
        {
            using var stringWriter     = new StringWriter();
            voucher.Logo               = Logo.GetLogo();
            voucher.BarCode            = "data:image/png;base64," + Convert.ToBase64String(QrCodeCreator.CreateQrCode(voucher.TicketNo));
            voucher.ValidPassengerIcon = IconToDisplay(voucher.TotalPersons, voucher.Passengers.Count);
            voucher.Facebook           = Facebook.GetLogo();
            voucher.YouTube            = YouTube.GetLogo();
            voucher.Instagram          = Instagram.GetLogo();
            var viewResult     = compositeViewEngine.FindView(ControllerContext, "Voucher", false);
            var viewDictionary = new ViewDataDictionary(new EmptyModelMetadataProvider(), new ModelStateDictionary())
            {
                Model = voucher
            };
            var viewContext = new ViewContext(ControllerContext, viewResult.View, viewDictionary, TempData, stringWriter, new HtmlHelperOptions());
            var htmlToPdf   = new HtmlToPdf(1000, 1414);
            await viewResult.View.RenderAsync(viewContext);

            var pdf      = htmlToPdf.ConvertHtmlString(stringWriter.ToString());
            var pdfBytes = pdf.Save();

            if (!Directory.Exists("Vouchers"))
            {
                Directory.CreateDirectory("Vouchers");
            }
            using (var streamWriter = new StreamWriter("Vouchers\\Voucher" + voucher.TicketNo + ".pdf")) {
                await streamWriter.BaseStream.WriteAsync(pdfBytes.AsMemory(0, pdfBytes.Length));
            }
            return(StatusCode(200, new {
                response = ApiMessages.FileCreated()
            }));
        }
 public async Task <IActionResult> PutShipOwnerAsync([FromBody] ShipOwnerWriteResource record)
 {
     repo.Update(mapper.Map <ShipOwnerWriteResource, ShipOwner>(await AttachUserIdToRecord(record)));
     return(StatusCode(200, new {
         response = ApiMessages.RecordUpdated()
     }));
 }
Example #12
0
 private static void LogInvalidModel(Object record, ILogger logger, ControllerContext context)
 {
     logger.LogError("{caller} {error} {record}",
                     GetControllerAndActionName(context),
                     GetSimpleDescription(ApiMessages.InvalidModel()),
                     GetObjectProperties(record));
 }
Example #13
0
 private IActionResult GetErrorMessage(int errorCode)
 {
     return(errorCode switch {
         450 => StatusCode(450, new { Response = ApiMessages.FKNotFoundOrInactive("Gender") }),
         451 => StatusCode(451, new { Response = ApiMessages.FKNotFoundOrInactive("Nationality") }),
         452 => StatusCode(452, new { Response = ApiMessages.FKNotFoundOrInactive("Ship") }),
         _ => StatusCode(490, new { Response = ApiMessages.RecordNotSaved() }),
     });
Example #14
0
        public async Task <IActionResult> DeleteUser(string id)
        {
            await userManager.DeleteAsync(await userManager.FindByIdAsync(id));

            return(StatusCode(200, new {
                response = ApiMessages.RecordDeleted()
            }));
        }
Example #15
0
 public ScheduleValidator()
 {
     // FKs
     RuleFor(x => x.PortId).NotEmpty();
     RuleFor(x => x.DestinationId).NotEmpty();
     // Fields
     RuleFor(x => x.Date).Must(DateHelpers.BeCorrectFormat).WithMessage(ApiMessages.DateHasWrongFormat());
     RuleFor(x => x.MaxPassengers).InclusiveBetween(0, 999).WithMessage(ApiMessages.InvalidMaxPassengers());
 }
Example #16
0
 public CrewValidator()
 {
     RuleFor(x => x.GenderId).NotEmpty();
     RuleFor(x => x.NationalityId).NotEmpty();
     RuleFor(x => x.ShipId).NotEmpty();
     RuleFor(x => x.Lastname).NotEmpty().MaximumLength(128);
     RuleFor(x => x.Firstname).NotEmpty().MaximumLength(128);
     RuleFor(x => x.Birthdate).Must(DateHelpers.BeCorrectFormat).WithMessage(ApiMessages.DateHasWrongFormat());
 }
        public async Task <IActionResult> PatchPickupPoint([FromQuery(Name = "id")] int id, [FromQuery(Name = "coordinates")] string coordinates)
        {
            await repo.GetById(id);

            repo.UpdateCoordinates(id, coordinates);
            return(StatusCode(200, new {
                response = ApiMessages.RecordUpdated()
            }));
        }
Example #18
0
 public async Task <IActionResult> Auth([FromBody] TokenRequest model)
 {
     return(model.GrantType switch {
         "password" => await GenerateNewToken(model),
         "refresh_token" => await RefreshToken(model),
         _ => StatusCode(401, new {
             response = ApiMessages.AuthenticationFailed()
         }),
     });
 public ShipRouteValidator()
 {
     RuleFor(x => x.Description).NotEmpty().MaximumLength(128);
     RuleFor(x => x.FromPort).NotEmpty().MaximumLength(128);
     RuleFor(x => x.FromTime).Must(TimeHelpers.BeValidTime).WithMessage(ApiMessages.InvalidShipRouteFromTime());
     RuleFor(x => x.ViaPort).MaximumLength(128);
     RuleFor(x => x.ViaTime).Must(TimeHelpers.BeEmptyOrValidTime).WithMessage(ApiMessages.InvalidShipRouteViaTime());
     RuleFor(x => x.ToPort).NotEmpty().MaximumLength(128);
     RuleFor(x => x.ToTime).Must(TimeHelpers.BeValidTime).WithMessage(ApiMessages.InvalidShipRouteToTime());
 }
Example #20
0
        public IActionResult SendLoginCredentials([FromBody] LoginCredentialsViewModel model)
        {
            string baseUrl   = $"{Request.Scheme}://{Request.Host.Value}{Request.PathBase.Value}";
            string loginLink = Url.Content($"{baseUrl}/login");
            var    result    = emailSender.SendLoginCredentials(model, loginLink);

            if (result.Successful)
            {
                return(StatusCode(200, new { response = ApiMessages.EmailInstructions() }));
            }
            return(StatusCode(496, new { response = ApiMessages.EmailNotSent() }));
        }
 public IActionResult EmbarkAllPassengers([FromQuery] int[] id)
 {
     if (repo.EmbarkAllPassengers(id))
     {
         return(StatusCode(200, new { response = ApiMessages.RecordUpdated() }));
     }
     else
     {
         return(StatusCode(404, new {
             response = ApiMessages.RecordNotFound()
         }));
     }
 }
 public IActionResult EmbarkSinglePassenger(int id)
 {
     if (repo.EmbarkSinglePassenger(id))
     {
         return(StatusCode(200, new { response = ApiMessages.RecordUpdated() }));
     }
     else
     {
         return(StatusCode(404, new {
             response = ApiMessages.RecordNotFound()
         }));
     }
 }
Example #23
0
        public async Task <T> GetById(int id)
        {
            var record = await context.Set <T>().FindAsync(id);

            if (record != null)
            {
                return(record);
            }
            else
            {
                throw new RecordNotFound(ApiMessages.RecordNotFound());
            }
        }
        public new async Task <PickupPoint> GetById(int id)
        {
            var record = await context.Set <PickupPoint>()
                         .Include(x => x.CoachRoute)
                         .SingleOrDefaultAsync(x => x.Id == id);

            if (record != null)
            {
                return(record);
            }
            else
            {
                throw new RecordNotFound(ApiMessages.RecordNotFound());
            }
        }
        public async Task <IActionResult> GetById(string id)
        {
            var record = await reservationRepo.GetById(id);

            if (await Identity.IsUserAdmin(httpContext) || await reservationRepo.DoesUserOwnRecord(record.Customer.Id))
            {
                return(StatusCode(200, record));
            }
            else
            {
                return(StatusCode(490, new {
                    response = ApiMessages.NotOwnRecord()
                }));
            }
        }
Example #26
0
        public new async Task <ShipReadResource> GetById(int id)
        {
            var record = await context.Ships
                         .Include(x => x.ShipOwner)
                         .SingleOrDefaultAsync(x => x.Id == id);

            if (record != null)
            {
                return(mapper.Map <Ship, ShipReadResource>(record));
            }
            else
            {
                throw new RecordNotFound(ApiMessages.RecordNotFound());
            }
        }
        public new async Task <CoachRouteReadDto> GetById(int id)
        {
            CoachRoute record = await context.CoachRoutes
                                .Include(x => x.Port)
                                .SingleOrDefaultAsync(m => m.Id == id);

            if (record != null)
            {
                return(mapper.Map <CoachRoute, CoachRouteReadDto>(record));
            }
            else
            {
                throw new RecordNotFound(ApiMessages.RecordNotFound());
            }
        }
Example #28
0
        new public async Task <ScheduleReadDto> GetById(int scheduleId)
        {
            var record = await context.Set <Schedule>()
                         .Include(p => p.Port)
                         .Include(p => p.Destination)
                         .SingleOrDefaultAsync(m => m.Id == scheduleId);

            if (record != null)
            {
                return(mapper.Map <Schedule, ScheduleReadDto>(record));
            }
            else
            {
                throw new RecordNotFound(ApiMessages.RecordNotFound());
            }
        }
Example #29
0
        public async Task <IActionResult> PutAsync([FromBody] CrewWriteResource record)
        {
            var response = repo.IsValid(record);

            if (response == 200)
            {
                repo.Update(mapper.Map <CrewWriteResource, Crew>(await AttachUserIdToRecord(AttachOccupantIdToRecord(record))));
                return(StatusCode(200, new {
                    response = ApiMessages.RecordUpdated()
                }));
            }
            else
            {
                return(GetErrorMessage(response));
            }
        }
        public async Task <IActionResult> PutRouteAsync([FromBody] CoachRouteWriteDto record)
        {
            var response = repo.IsValid(record);

            if (response == 200)
            {
                repo.Update(mapper.Map <CoachRouteWriteDto, CoachRoute>(await AttachUserIdToRecord(record)));
                return(StatusCode(200, new {
                    response = ApiMessages.RecordUpdated()
                }));
            }
            else
            {
                return(GetErrorMessage(response));
            }
        }