/// <summary> /// Save Segment Codes /// </summary> /// <param name="model">The model.</param> /// <returns>SegmentCodeViewModel.</returns> internal SegmentCodesViewModel <T> Save(EnumerableResponse <T> model) { model = GetDataForSave(model, _segmentCodesCacheKey, GridKey, _keySegmentFilter); SegmentCodesViewModel <T> viewModel = null; model = Service.Save(model); SessionHelper.Remove(_segmentCodesCacheKey); foreach (var segment in model.Items) { segment.HasChanged = false; segment.IsDeleted = false; segment.IsNewLine = false; } var message = CommonResx.SaveSuccessMessage; viewModel = new SegmentCodesViewModel <T> { SegmentCodes = model, UserMessage = new UserMessage(model, message), TotalResultsCount = model.TotalResultsCount }; return(viewModel); }
/// <summary> /// Get Paged Segment Codes saving in cache. /// </summary> /// <param name="insertIndex"></param> /// <param name="pageNumber">The page number.</param> /// <param name="pageSize">Size of the page.</param> /// <param name="finderOptions">The segment number.</param> /// <param name="model"></param> /// <param name="isCacheRemovable">Set true while dropdown segment name change</param> /// <returns>EnumerableResponse</returns> internal SegmentCodesViewModel <T> Get(SegmentCodesViewModel <T> model, int insertIndex, int pageNumber, int pageSize, IList <IList <Filter> > finderOptions, bool isCacheRemovable) { // Remove the segment code details from cache while changing the segment name from drop down. if (isCacheRemovable) { SessionHelper.Remove(_segmentCodesCacheKey); } return(GetSegments(model, insertIndex, pageNumber, pageSize, finderOptions)); }
/// <summary> /// Get segment code detail based on pageNumber /// </summary> /// <param name="index"></param> /// <param name="pageNumber">Page Number</param> /// <param name="pageSize">Page Size</param> /// <param name="filters">Segment Number</param> /// <param name="model"></param> /// <param name="isCacheRemovable"></param> /// <returns>JsonNetResult.</returns> public virtual JsonNetResult Get(SegmentCodesViewModel <T> model, int index, int pageNumber, int pageSize, IList <IList <Filter> > filters, bool isCacheRemovable) { try { var segmentCode = ControllerInternal.Get(model, index, pageNumber, pageSize, filters, isCacheRemovable); return(JsonNet(segmentCode)); } catch (BusinessException businessException) { return(JsonNet(BuildErrorModelBase(string.Empty, businessException))); } }
/// <summary> /// Get a SegmentCodes /// </summary> /// <param name="id">Id for SegmentCodes</param> /// <returns>JSON object for SegmentCodes</returns> internal SegmentCodesViewModel <T> GetById(string id) { var viewModel = new SegmentCodesViewModel <T>(); // Remove cached data while page refreshing SessionHelper.Remove(_segmentCodesCacheKey); viewModel.UserAccess = GetAccessRights(); var itemSegmentService = Context.Container.Resolve <IItemSegmentService <ItemSegment> >(new ParameterOverride("context", Context)); var segmentname = itemSegmentService.Get(); if (segmentname.Items != null && segmentname.Items.Any()) { foreach (var items in segmentname.Items) { viewModel.Segments.Add(new SegmentName { Text = items.Description, Value = items.SegmentNumber, SegmentLength = items.Length, SegmentNumber = items.SegmentNumber }); } viewModel.SegmentNameLength = Convert.ToInt32(segmentname.Items.First().Length); viewModel.SegmentNumber = segmentname.Items.First().SegmentNumber; viewModel.UserMessage = new UserMessage(segmentname); viewModel.TotalResultsCount = viewModel.TotalResultsCount; viewModel.Data = viewModel.Data ?? new T(); } else { var errorList = new List <EntityError>(); var entityError = new EntityError { Message = SegmentCodesResx.NoSegments, Priority = Priority.Error }; errorList.Add(entityError); viewModel.UserMessage = new UserMessage { IsSuccess = false, Errors = errorList }; } return(viewModel); }
public virtual JsonNetResult AreSegmentCodesDeletable(EnumerableResponse <T> model) { var deletableSegmentCodes = new List <string>(); try { return(JsonNet(ControllerInternal.AreSegmentCodesDeletable(model.Items, ref deletableSegmentCodes))); } catch (BusinessException businessException) { var userMessage = new UserMessage { Errors = businessException.Errors }; var viewModel = new SegmentCodesViewModel <T> { IsSegmentCodeUsed = true, DeletedSegmentCodes = deletableSegmentCodes, UserMessage = userMessage }; return(JsonNet(viewModel)); } }
/// <summary> /// Get Segment Code Details /// </summary> /// <param name="model"></param> /// <param name="insertIndex"></param> /// <param name="pageNumber"></param> /// <param name="pageSize"></param> /// <param name="finderOptions"></param> /// <returns></returns> private SegmentCodesViewModel <T> GetSegments(SegmentCodesViewModel <T> model, int insertIndex, int pageNumber, int pageSize, IList <IList <Filter> > finderOptions) { model = model ?? new SegmentCodesViewModel <T>(); if (finderOptions != null) { _filterExpression = ExpressionBuilder <T> .CreateExpression(finderOptions); } // If finder option is null then set filter from model else { var items = model.SegmentCodes.Items; if (items != null && items.Any()) { var firstOrDefault = items.FirstOrDefault(); if (firstOrDefault != null) { _filterExpression = segment => segment.SegmentNumber == firstOrDefault.SegmentNumber; } } else { model.SegmentCodes = new EnumerableResponse <T> { Items = new List <T>() }; } } if (model.SegmentCodes != null && model.SegmentCodes.Items.Any()) { // Check for valid segment length var invalidSegmentCode = model.SegmentCodes.Items.Where(s => ((s.SegmentCode == null) || (s.SegmentCode.Length != model.SegmentNameLength)) && (!s.IsDeleted && s.IsNewLine)).Select(segment => segment); // If there any invalid segment code, then throw the exception and stop the pagination. if (invalidSegmentCode.Any()) { var errors = new List <EntityError> { new EntityError { Message = string.Format(SegmentCodesResx.InvalidLength, SegmentCodesResx.SegmentCode, model.SegmentNameLength) } }; throw new BusinessException(string.Empty, null, errors); } } _getSegments = GetSegmentCodes; var newRecord = new T(); // If insert index is great than zero then create new line, server side add new line if (insertIndex > 0 && model.SegmentCodes != null) { if (model.SegmentNumber == null && model.SegmentCodes.Items.Any()) { model.SegmentNumber = model.SegmentCodes.Items.FirstOrDefault().SegmentNumber; } newRecord = NewSegmentCode(model.SegmentCodes.Items.Count(), model.SegmentNumber); } // Merge the model data with cached data var mergerdList = MergeChangeItemToCache(model.SegmentCodes, pageNumber, pageSize, insertIndex, GridKey, _segmentCodesCacheKey, _getSegments, _keySegmentFilter, newRecord); return(new SegmentCodesViewModel <T> { SegmentCodes = mergerdList, UserMessage = new UserMessage(mergerdList), }); }