Example #1
0
        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);
        }