/// <summary>
        /// Method to seed data for auto sequence - SS
        /// </summary>
        /// <param name="instituteId">institute id</param>
        /// <param name="loggedInUserId">logged in user</param>
        private async Task SeedDataForAutoSequenceByTypeAsync(int instituteId, string loggedInUserId, AutoSequenceGeneratorTypeEnum type)
        {
            await semaphore.WaitAsync();

            try
            {
                if (!await _iMSDbContext.AutoSequenceGenerators.AnyAsync(x => x.InstituteId == instituteId && x.AutoSequenceGeneratorType == type))
                {
                    var availableData = new List <string>()
                    {
                        "Institute", "Day", "Month", "Year", "Date", "Text", "Sequence Number"
                    };
                    var autoSequence = new AutoSequenceGenerator()
                    {
                        AutoSequenceGeneratorType = type,
                        CreatedById = loggedInUserId,
                        CreatedOn   = DateTime.UtcNow,
                        CustomText  = string.Empty,
                        InstituteId = instituteId,
                        Seperator   = AutoSequenceGeneratorSeperatorEnum.None,
                        UpdateById  = loggedInUserId,
                        UpdateDate  = DateTime.UtcNow
                    };
                    _iMSDbContext.AutoSequenceGenerators.Add(autoSequence);
                    await _iMSDbContext.SaveChangesAsync();

                    #region AutoSequenceGeneratorDataType
                    List <AutoSequenceGeneratorDataType> generatorDataTypes = new List <AutoSequenceGeneratorDataType>();
                    int orderId = 0;
                    foreach (var data in availableData)
                    {
                        generatorDataTypes.Add(new AutoSequenceGeneratorDataType()
                        {
                            CreatedOn  = DateTime.UtcNow,
                            IsSelected = (data == "Sequence Number"),
                            AutoSequenceGeneratorId = autoSequence.Id,
                            OrderId = orderId,
                            Name    = data,
                            Length  = (data == "Sequence Number") ? 5 : 3
                        });
                        orderId++;
                    }
                    _iMSDbContext.AutoSequenceGeneratorDataTypes.AddRange(generatorDataTypes);
                    await _iMSDbContext.SaveChangesAsync();

                    #endregion
                }
            }
            finally
            {
                semaphore.Release();
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Method to generate employee id - SS
        /// </summary>
        /// <param name="autoSequence"></param>
        /// <returns></returns>
        private async Task <string> GenerateRefundNumberAsync(AutoSequenceGenerator autoSequence)
        {
            string value    = string.Empty;
            var    selected = autoSequence.AutoSequenceGeneratorDataTypes.OrderByDescending(x => x.OrderId).Where(x => x.IsSelected).ToList();

            selected.Reverse();
            for (int i = 0; i < selected.Count; i++)
            {
                var data = selected[i];
                switch (data.Name)
                {
                case "Institute":
                {
                    value += autoSequence.Institute.Name.Substring(0, (autoSequence.Institute.Name.Length >= data.Length ? data.Length : autoSequence.Institute.Name.Length));
                    if ((selected.Count - 1) != i)
                    {
                        value += EnumHelperService.GetDescription(autoSequence.Seperator);
                    }
                }
                break;

                case "Day":
                {
                    value += DateTime.UtcNow.DayOfWeek.GetDescription();
                    if ((selected.Count - 1) != i)
                    {
                        value += EnumHelperService.GetDescription(autoSequence.Seperator);
                    }
                }
                break;

                case "Month":
                {
                    value += DateTime.UtcNow.Month;
                    if ((selected.Count - 1) != i)
                    {
                        value += EnumHelperService.GetDescription(autoSequence.Seperator);
                    }
                }
                break;

                case "Year":
                {
                    value += DateTime.UtcNow.Year;
                    if ((selected.Count - 1) != i)
                    {
                        value += EnumHelperService.GetDescription(autoSequence.Seperator);
                    }
                }
                break;

                case "Date":
                {
                    value += DateTime.UtcNow.Day;
                    if ((selected.Count - 1) != i)
                    {
                        value += EnumHelperService.GetDescription(autoSequence.Seperator);
                    }
                }
                break;

                case "Text":
                {
                    value += autoSequence.CustomText.Substring(0, data.Length);
                    if ((selected.Count - 1) != i)
                    {
                        value += EnumHelperService.GetDescription(autoSequence.Seperator);
                    }
                }
                break;

                case "Sequence Number":
                {
                    var count = await _iMSDbContext.FeeRefunds.CountAsync();

                    count++;
                    var length = "D" + data.Length;
                    value += count.ToString(length);
                    if ((selected.Count - 1) != i)
                    {
                        value += EnumHelperService.GetDescription(autoSequence.Seperator);
                    }
                }
                break;
                }
            }
            return(value);
        }