//public int CreateNonPO(VBRequestDocumentNonPOFormDto form) public async Task <int> CreateNonPO(VBRequestDocumentNonPOFormDto form) { var internalTransaction = _dbContext.Database.CurrentTransaction == null; var transaction = !internalTransaction ? _dbContext.Database.CurrentTransaction : _dbContext.Database.BeginTransaction(); try { var existingData = _dbContext.VBRequestDocuments.Where(a => a.Date.AddHours(_identityService.TimezoneOffset).Month == form.Date.GetValueOrDefault().AddHours(_identityService.TimezoneOffset).Month).OrderByDescending(s => s.Index).FirstOrDefault(); var documentNo = GetDocumentNo(form, existingData); var model = new VBRequestDocumentModel( documentNo.Item1, form.Date.GetValueOrDefault(), form.RealizationEstimationDate.GetValueOrDefault(), form.SuppliantUnit.Id.GetValueOrDefault(), form.SuppliantUnit.Code, form.SuppliantUnit.Name, form.SuppliantUnit.Division.Id.GetValueOrDefault(), form.SuppliantUnit.Division.Code, form.SuppliantUnit.Division.Name, form.Currency.Id.GetValueOrDefault(), form.Currency.Code, form.Currency.Symbol, form.Currency.Description, form.Currency.Rate.GetValueOrDefault(), form.Purpose, form.Amount.GetValueOrDefault(), false, false, VBType.NonPO, documentNo.Item2, form.IsInklaring ); model.FlagForCreate(_identityService.Username, UserAgent); _dbContext.VBRequestDocuments.Add(model); await _dbContext.SaveChangesAsync(); var items = AddNonPOItems(model.Id, form.Items); _dbContext.VBRequestDocumentItems.AddRange(items); await _dbContext.SaveChangesAsync(); if (internalTransaction) { transaction.Commit(); } return(model.Id); } catch (Exception ex) { if (internalTransaction) { transaction.Rollback(); } throw ex; } }