public async Task <string> GenerateDocumentNumber(string Type, string BankCode, string Username, DateTime Date) { var result = ""; var lastData = await dbSet.Where(w => w.BankCode.Equals(BankCode) && w.Type.Equals(Type) && (w.Month == Date.Month && w.Year == Date.Year)).OrderByDescending(o => o.LastModifiedUtc).FirstOrDefaultAsync(); DateTime Now = Date; if (lastData == null) { result = $"{Now.ToString("yy")}{Now.ToString("MM")}{BankCode}{Type}0001"; var bankDocumentNumber = new BankDocumentNumber() { BankCode = BankCode, Type = Type, LastDocumentNumber = 1, Month = Date.Month, Year = Date.Year }; EntityExtension.FlagForCreate(bankDocumentNumber, Username, USER_AGENT); dbContext.BankDocumentNumbers.Add(bankDocumentNumber); await dbContext.SaveChangesAsync(); } else { //if (lastData.LastModifiedUtc.Month != Now.Month) //{ // result = $"{Now.ToString("yy")}{Now.ToString("MM")}{BankCode}{Type}0001"; // lastData.LastDocumentNumber = 1; //} //else //{ lastData.LastDocumentNumber += 1; result = $"{Now.ToString("yy")}{Now.ToString("MM")}{BankCode}{Type}{lastData.LastDocumentNumber.ToString().PadLeft(4, '0')}"; //} EntityExtension.FlagForUpdate(lastData, Username, USER_AGENT); lastData.LastModifiedUtc = Date; dbContext.BankDocumentNumbers.Update(lastData); //dbContext.Entry(lastData).Property(x => x.LastDocumentNumber).IsModified = true; //dbContext.Entry(lastData).Property(x => x.LastModifiedAgent).IsModified = true; //dbContext.Entry(lastData).Property(x => x.LastModifiedBy).IsModified = true; //dbContext.Entry(lastData).Property(x => x.LastModifiedUtc).IsModified = true; await dbContext.SaveChangesAsync(); } return(result); }
public async Task <string> GenerateDocumentNumber(string Type, string BankCode, string Username) { string result = ""; BankDocumentNumber lastData = await dbSet.Where(w => w.BankCode.Equals(BankCode) && w.Type.Equals(Type)).FirstOrDefaultAsync(); DateTime Now = DateTime.Now; if (lastData == null) { result = $"{Now.ToString("yy")}{Now.ToString("MM")}{BankCode}{Type}001"; BankDocumentNumber bankDocumentNumber = new BankDocumentNumber() { BankCode = BankCode, Type = Type, LastDocumentNumber = 1 }; EntityExtension.FlagForCreate(bankDocumentNumber, Username, USER_AGENT); dbSet.Add(bankDocumentNumber); await dbContext.SaveChangesAsync(); } else { if (lastData.CreatedUtc.Month != Now.Month) { result = $"{Now.ToString("yy")}{Now.ToString("MM")}{BankCode}{Type}001"; lastData.LastDocumentNumber = 1; } else { lastData.LastDocumentNumber += 1; result = $"{Now.ToString("yy")}{Now.ToString("MM")}{BankCode}{Type}{lastData.LastDocumentNumber.ToString().PadLeft(4, '0')}"; } EntityExtension.FlagForUpdate(lastData, Username, USER_AGENT); dbContext.Entry(lastData).Property(x => x.LastDocumentNumber).IsModified = true; dbContext.Entry(lastData).Property(x => x.LastModifiedAgent).IsModified = true; dbContext.Entry(lastData).Property(x => x.LastModifiedBy).IsModified = true; dbContext.Entry(lastData).Property(x => x.LastModifiedUtc).IsModified = true; await dbContext.SaveChangesAsync(); } return(result); }