public bool IsValid(ModelStateDictionary modelState, DocumentOrderViewModel model, out List <DocumentViewModel> validatedDocuments) { if (model.BookingType == BookingTypes.StandardOrderVisit) { ValidateStandardOrderDuplicateReference(modelState, model); if (modelState.IsValid) { ValidateStandardOrderDocumentReferences(modelState); } } if (model.BookingType == BookingTypes.BulkOrderVisit) { if (!model.HaveNoDocumentReference && string.IsNullOrWhiteSpace(model.Series)) { modelState.AddModelError("Series", Constants.Series_Required); } if (!string.IsNullOrWhiteSpace(model.Series)) { ValidateNotOrderableSeries(modelState, model.Series); } ValidateBulkOrderDuplicateReference(modelState, model); if (modelState.IsValid) { ValidateSeriesReferences(modelState, model.Series); ValidateBulkOrderDocumentReferences(modelState); } } validatedDocuments = _validatedDocuments; return(modelState.IsValid); }
public static BookingModel MapToBookingModel(this DocumentOrderViewModel model, List <DocumentViewModel> validatedDocuments) { var returnModel = new BookingModel { BookingType = model.BookingType, ReaderTicket = model.ReaderTicket, BookingReference = model.BookingReference, VisitStartDate = model.BookingStartDate, CompleteByDate = model.CompleteByDate, SeatType = model.SeatType, SeatNumber = model.SeatNumber, AdditionalRequirements = model.AdditionalRequirements, OrderDocuments = new List <OrderDocumentModel>() }; foreach (var document in validatedDocuments) { returnModel.OrderDocuments.Add(new OrderDocumentModel() { DocumentReference = document.Reference, Description = document.Description, LetterCode = document.LetterCode, ClassNumber = document.ClassNumber, PieceId = document.PieceId, PieceReference = document.PieceReference, SubClassNumber = document.SubClassNumber == 0 ? -1 : document.SubClassNumber, ItemReference = document.ItemReference, Site = document.IsOffsite ? "offsite" : "kew", IsReserve = document.IsReserved }); } return(returnModel); }
public async Task <IActionResult> OrderDocuments(DocumentOrderViewModel model) { if (_validateDocumentOrder.IsValid(ModelState, model, out var validatedDocs)) { var bookingModel = model.MapToBookingModel(validatedDocs); var response = await _bookingService.UpsertDocumentAsync(bookingModel); if (response.IsSuccess) { var routeValues = new { bookingtype = model.BookingType.ToStringURL(), readerticket = model.ReaderTicket, bookingReference = model.BookingReference }; return(RedirectToAction("OrderComplete", "DocumentOrder", routeValues)); } ModelState.AddModelError("", response.ErrorMessage); } return(View(model)); }
public static DocumentOrderViewModel MapToDocumentOrderViewModel(this BookingModel model) { var returnModel = new DocumentOrderViewModel { BookingType = model.BookingType, ReaderTicket = model.ReaderTicket, BookingReference = model.BookingReference, BookingStartDate = model.VisitStartDate, CompleteByDate = model.CompleteByDate, SeatType = model.SeatType, SeatNumber = model.SeatNumber, AdditionalRequirements = model.AdditionalRequirements }; var documents = model.OrderDocuments.Where(d => !d.IsReserve).ToList(); var reserveDocuments = model.OrderDocuments.Where(d => d.IsReserve).ToList(); returnModel.Series = documents.Count > 0 ? $"{documents[0].LetterCode} {documents[0].ClassNumber}" : string.Empty; returnModel.DocumentReference1 = documents.Count > 0 ? documents[0].DocumentReference : string.Empty; returnModel.DocumentReference2 = documents.Count > 1 ? documents[1].DocumentReference : string.Empty; returnModel.DocumentReference3 = documents.Count > 2 ? documents[2].DocumentReference : string.Empty; returnModel.DocumentReference4 = documents.Count > 3 ? documents[3].DocumentReference : string.Empty; returnModel.DocumentReference5 = documents.Count > 4 ? documents[4].DocumentReference : string.Empty; returnModel.DocumentReference6 = documents.Count > 5 ? documents[5].DocumentReference : string.Empty; returnModel.DocumentReference7 = documents.Count > 6 ? documents[6].DocumentReference : string.Empty; returnModel.DocumentReference8 = documents.Count > 7 ? documents[7].DocumentReference : string.Empty; returnModel.DocumentReference9 = documents.Count > 8 ? documents[8].DocumentReference : string.Empty; returnModel.DocumentReference10 = documents.Count > 9 ? documents[9].DocumentReference : string.Empty; returnModel.DocumentReference11 = documents.Count > 10 ? documents[10].DocumentReference : string.Empty; returnModel.DocumentReference12 = documents.Count > 11 ? documents[11].DocumentReference : string.Empty; returnModel.DocumentReference13 = documents.Count > 12 ? documents[12].DocumentReference : string.Empty; returnModel.DocumentReference14 = documents.Count > 13 ? documents[13].DocumentReference : string.Empty; returnModel.DocumentReference15 = documents.Count > 14 ? documents[14].DocumentReference : string.Empty; returnModel.DocumentReference16 = documents.Count > 15 ? documents[15].DocumentReference : string.Empty; returnModel.DocumentReference17 = documents.Count > 16 ? documents[16].DocumentReference : string.Empty; returnModel.DocumentReference18 = documents.Count > 17 ? documents[17].DocumentReference : string.Empty; returnModel.DocumentReference19 = documents.Count > 18 ? documents[18].DocumentReference : string.Empty; returnModel.DocumentReference20 = documents.Count > 19 ? documents[19].DocumentReference : string.Empty; returnModel.DocumentReference21 = documents.Count > 20 ? documents[20].DocumentReference : string.Empty; returnModel.DocumentReference22 = documents.Count > 21 ? documents[21].DocumentReference : string.Empty; returnModel.DocumentReference23 = documents.Count > 22 ? documents[22].DocumentReference : string.Empty; returnModel.DocumentReference24 = documents.Count > 23 ? documents[23].DocumentReference : string.Empty; returnModel.DocumentReference25 = documents.Count > 24 ? documents[24].DocumentReference : string.Empty; returnModel.DocumentReference26 = documents.Count > 25 ? documents[25].DocumentReference : string.Empty; returnModel.DocumentReference27 = documents.Count > 26 ? documents[26].DocumentReference : string.Empty; returnModel.DocumentReference28 = documents.Count > 27 ? documents[27].DocumentReference : string.Empty; returnModel.DocumentReference29 = documents.Count > 28 ? documents[28].DocumentReference : string.Empty; returnModel.DocumentReference30 = documents.Count > 29 ? documents[29].DocumentReference : string.Empty; returnModel.DocumentReference31 = documents.Count > 30 ? documents[30].DocumentReference : string.Empty; returnModel.DocumentReference32 = documents.Count > 31 ? documents[31].DocumentReference : string.Empty; returnModel.DocumentReference33 = documents.Count > 32 ? documents[32].DocumentReference : string.Empty; returnModel.DocumentReference34 = documents.Count > 33 ? documents[33].DocumentReference : string.Empty; returnModel.DocumentReference35 = documents.Count > 34 ? documents[34].DocumentReference : string.Empty; returnModel.DocumentReference36 = documents.Count > 35 ? documents[35].DocumentReference : string.Empty; returnModel.DocumentReference37 = documents.Count > 36 ? documents[36].DocumentReference : string.Empty; returnModel.DocumentReference38 = documents.Count > 37 ? documents[37].DocumentReference : string.Empty; returnModel.DocumentReference39 = documents.Count > 38 ? documents[38].DocumentReference : string.Empty; returnModel.DocumentReference40 = documents.Count > 39 ? documents[39].DocumentReference : string.Empty; returnModel.ReserveDocumentReference1 = reserveDocuments.Count > 0 ? reserveDocuments[0].DocumentReference : string.Empty; returnModel.ReserveDocumentReference2 = reserveDocuments.Count > 1 ? reserveDocuments[1].DocumentReference : string.Empty; returnModel.ReserveDocumentReference3 = reserveDocuments.Count > 2 ? reserveDocuments[2].DocumentReference : string.Empty; return(returnModel); }
private void ValidateBulkOrderDuplicateReference(ModelStateDictionary modelStateDictionary, DocumentOrderViewModel model) { _documentReference = new Dictionary <int, string>(); AddReference(1, model.DocumentReference1); AddReference(2, model.DocumentReference2); AddReference(3, model.DocumentReference3); AddReference(4, model.DocumentReference4); AddReference(5, model.DocumentReference5); AddReference(6, model.DocumentReference6); AddReference(7, model.DocumentReference7); AddReference(8, model.DocumentReference8); AddReference(9, model.DocumentReference9); AddReference(10, model.DocumentReference10); AddReference(11, model.DocumentReference11); AddReference(12, model.DocumentReference12); AddReference(13, model.DocumentReference13); AddReference(14, model.DocumentReference14); AddReference(15, model.DocumentReference15); AddReference(16, model.DocumentReference16); AddReference(17, model.DocumentReference17); AddReference(18, model.DocumentReference18); AddReference(19, model.DocumentReference19); AddReference(20, model.DocumentReference20); AddReference(21, model.DocumentReference21); AddReference(22, model.DocumentReference22); AddReference(23, model.DocumentReference23); AddReference(24, model.DocumentReference24); AddReference(25, model.DocumentReference25); AddReference(26, model.DocumentReference26); AddReference(27, model.DocumentReference27); AddReference(28, model.DocumentReference28); AddReference(29, model.DocumentReference29); AddReference(30, model.DocumentReference30); AddReference(31, model.DocumentReference31); AddReference(32, model.DocumentReference32); AddReference(33, model.DocumentReference33); AddReference(34, model.DocumentReference34); AddReference(35, model.DocumentReference35); AddReference(36, model.DocumentReference36); AddReference(37, model.DocumentReference37); AddReference(38, model.DocumentReference38); AddReference(39, model.DocumentReference39); AddReference(40, model.DocumentReference40); var duplicates = _documentReference.GroupBy(x => x.Value.ToLower()).Where(c => c.Skip(1).Any()).SelectMany(c => c).ToList(); foreach (var doc in duplicates) { modelStateDictionary.AddModelError($"DocumentReference{doc.Key}", $"{doc.Value} - {Constants.Duplicate_Document_Reference}"); } }
private void ValidateStandardOrderDuplicateReference(ModelStateDictionary modelStateDictionary, DocumentOrderViewModel model) { _documentReference = new Dictionary <int, string>(); AddReference(1, model.DocumentReference1); AddReference(2, model.DocumentReference2); AddReference(3, model.DocumentReference3); AddReference(4, model.DocumentReference4); AddReference(5, model.DocumentReference5); AddReference(6, model.DocumentReference6); AddReference(7, model.DocumentReference7); AddReference(8, model.DocumentReference8); AddReference(9, model.DocumentReference9); AddReference(10, model.DocumentReference10); AddReference(11, model.DocumentReference11); AddReference(12, model.DocumentReference12); AddReference(13, model.ReserveDocumentReference1); AddReference(14, model.ReserveDocumentReference2); AddReference(15, model.ReserveDocumentReference3); var duplicates = _documentReference.GroupBy(x => x.Value.ToLower()).Where(c => c.Skip(1).Any()).SelectMany(c => c).ToList(); foreach (var doc in duplicates) { var errorId = doc.Key < 13 ? $"DocumentReference{doc.Key}" : $"ReserveDocumentReference{doc.Key - 12}"; modelStateDictionary.AddModelError(errorId, $"{doc.Value} - {Constants.Duplicate_Document_Reference}"); } }
public void ValidateSeriesReferences(ModelStateDictionary modelStateDictionary, DocumentOrderViewModel model) { ValidateSeriesReference(modelStateDictionary, "DocumentReference1", model.DocumentReference1, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference2", model.DocumentReference2, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference3", model.DocumentReference3, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference4", model.DocumentReference4, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference5", model.DocumentReference5, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference6", model.DocumentReference6, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference7", model.DocumentReference7, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference8", model.DocumentReference8, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference9", model.DocumentReference9, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference10", model.DocumentReference10, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference11", model.DocumentReference11, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference12", model.DocumentReference12, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference13", model.DocumentReference13, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference14", model.DocumentReference14, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference15", model.DocumentReference15, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference16", model.DocumentReference16, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference17", model.DocumentReference17, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference18", model.DocumentReference18, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference19", model.DocumentReference19, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference20", model.DocumentReference20, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference21", model.DocumentReference21, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference22", model.DocumentReference22, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference23", model.DocumentReference23, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference24", model.DocumentReference24, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference25", model.DocumentReference25, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference26", model.DocumentReference26, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference27", model.DocumentReference27, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference28", model.DocumentReference28, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference29", model.DocumentReference29, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference30", model.DocumentReference30, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference31", model.DocumentReference31, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference32", model.DocumentReference32, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference33", model.DocumentReference33, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference34", model.DocumentReference34, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference35", model.DocumentReference35, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference36", model.DocumentReference36, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference37", model.DocumentReference37, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference38", model.DocumentReference38, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference39", model.DocumentReference39, model.Series); ValidateSeriesReference(modelStateDictionary, "DocumentReference40", model.DocumentReference40, model.Series); }
public void ValidateBulkOrderDocumentReferences(ModelStateDictionary modelStateDictionary, DocumentOrderViewModel model) { _validatedDocuments = new List <DocumentViewModel>(); ValidateReference(modelStateDictionary, "DocumentReference1", model.DocumentReference1); ValidateReference(modelStateDictionary, "DocumentReference2", model.DocumentReference2); ValidateReference(modelStateDictionary, "DocumentReference3", model.DocumentReference3); ValidateReference(modelStateDictionary, "DocumentReference4", model.DocumentReference4); ValidateReference(modelStateDictionary, "DocumentReference5", model.DocumentReference5); ValidateReference(modelStateDictionary, "DocumentReference6", model.DocumentReference6); ValidateReference(modelStateDictionary, "DocumentReference7", model.DocumentReference7); ValidateReference(modelStateDictionary, "DocumentReference8", model.DocumentReference8); ValidateReference(modelStateDictionary, "DocumentReference9", model.DocumentReference9); ValidateReference(modelStateDictionary, "DocumentReference10", model.DocumentReference10); ValidateReference(modelStateDictionary, "DocumentReference11", model.DocumentReference11); ValidateReference(modelStateDictionary, "DocumentReference12", model.DocumentReference12); ValidateReference(modelStateDictionary, "DocumentReference13", model.DocumentReference13); ValidateReference(modelStateDictionary, "DocumentReference14", model.DocumentReference14); ValidateReference(modelStateDictionary, "DocumentReference15", model.DocumentReference15); ValidateReference(modelStateDictionary, "DocumentReference16", model.DocumentReference16); ValidateReference(modelStateDictionary, "DocumentReference17", model.DocumentReference17); ValidateReference(modelStateDictionary, "DocumentReference18", model.DocumentReference18); ValidateReference(modelStateDictionary, "DocumentReference19", model.DocumentReference19); ValidateReference(modelStateDictionary, "DocumentReference20", model.DocumentReference20); ValidateReference(modelStateDictionary, "DocumentReference21", model.DocumentReference21); ValidateReference(modelStateDictionary, "DocumentReference22", model.DocumentReference22); ValidateReference(modelStateDictionary, "DocumentReference23", model.DocumentReference23); ValidateReference(modelStateDictionary, "DocumentReference24", model.DocumentReference24); ValidateReference(modelStateDictionary, "DocumentReference25", model.DocumentReference25); ValidateReference(modelStateDictionary, "DocumentReference26", model.DocumentReference26); ValidateReference(modelStateDictionary, "DocumentReference27", model.DocumentReference27); ValidateReference(modelStateDictionary, "DocumentReference28", model.DocumentReference28); ValidateReference(modelStateDictionary, "DocumentReference29", model.DocumentReference29); ValidateReference(modelStateDictionary, "DocumentReference30", model.DocumentReference30); ValidateReference(modelStateDictionary, "DocumentReference31", model.DocumentReference31); ValidateReference(modelStateDictionary, "DocumentReference32", model.DocumentReference32); ValidateReference(modelStateDictionary, "DocumentReference33", model.DocumentReference33); ValidateReference(modelStateDictionary, "DocumentReference34", model.DocumentReference34); ValidateReference(modelStateDictionary, "DocumentReference35", model.DocumentReference35); ValidateReference(modelStateDictionary, "DocumentReference36", model.DocumentReference36); ValidateReference(modelStateDictionary, "DocumentReference37", model.DocumentReference37); ValidateReference(modelStateDictionary, "DocumentReference38", model.DocumentReference38); ValidateReference(modelStateDictionary, "DocumentReference39", model.DocumentReference39); ValidateReference(modelStateDictionary, "DocumentReference40", model.DocumentReference40); }
public void ValidateStandardOrderDocumentReferences(ModelStateDictionary modelStateDictionary, DocumentOrderViewModel model) { _validatedDocuments = new List <DocumentViewModel>(); ValidateReference(modelStateDictionary, "DocumentReference1", model.DocumentReference1); ValidateReference(modelStateDictionary, "DocumentReference2", model.DocumentReference2); ValidateReference(modelStateDictionary, "DocumentReference3", model.DocumentReference3); ValidateReference(modelStateDictionary, "DocumentReference4", model.DocumentReference4); ValidateReference(modelStateDictionary, "DocumentReference5", model.DocumentReference5); ValidateReference(modelStateDictionary, "DocumentReference6", model.DocumentReference6); ValidateReference(modelStateDictionary, "DocumentReference7", model.DocumentReference7); ValidateReference(modelStateDictionary, "DocumentReference8", model.DocumentReference8); ValidateReference(modelStateDictionary, "DocumentReference9", model.DocumentReference9); ValidateReference(modelStateDictionary, "DocumentReference10", model.DocumentReference10); ValidateReference(modelStateDictionary, "DocumentReference11", model.DocumentReference11); ValidateReference(modelStateDictionary, "DocumentReference12", model.DocumentReference12); ValidateReference(modelStateDictionary, "ReserveDocumentReference1", model.ReserveDocumentReference1, true); ValidateReference(modelStateDictionary, "ReserveDocumentReference2", model.ReserveDocumentReference2, true); ValidateReference(modelStateDictionary, "ReserveDocumentReference3", model.ReserveDocumentReference3, true); }