Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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)));
            }
        }
Exemplo n.º 4
0
        /// <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));
            }
        }
Exemplo n.º 6
0
        /// <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),
            });
        }