/// <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(); } }
/// <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); }