public async Task AddItem(Guid tenderGuid, ItemDTO itemDTO) { if (!AccessManager.CanCreateTender) { throw new AccessViolationException(); } var acc_token = await AccessManager.GetTenderTokenAsync(tenderGuid); var savedTender = await Context.GetTenderAsync(tenderGuid); var items = savedTender.Items; items.Add(new Item(itemDTO) { AdditionalClassifications = itemDTO.AdditionalClassifications?.Select(x => new Classification(x)).ToList() }); using (TendersService service = new TendersService()) { var rest = await service.ChangeTender(tenderGuid, new { items }, acc_token); Context.UpdateTender(savedTender, rest); } await Context.SaveChangesAsync(); }
private async Task <Guid> GetFirstTenderGuid() { using (TendersService service = new TendersService(true)) { return((await service.GetModificationsPage(null, false, 1)).Items.First().Guid); } }
public async Task PrevSyncTest() { using (var tendersService = new TendersService(true)) { var offset = (await tendersService.GetModificationsPage(null, false, 1)).NextPage.Offset; using (var syncService = new TendersSyncEngine(true, offset)) await syncService.PrevSync(CancellationToken.None); } }
public static void Init <U>(Tender tender) where U : class, IService { using (var service = new TendersService()) { var created = service.CreateTender(TendersServiceTests.ValidTender).Result; Tender = created.Data; Token = created.Token; Service = (T)Activator.CreateInstance(typeof(U), created.Data.Guid, null); } }
public static void Init(TestContext context) { Init <BidsService>(TendersServiceTests.ValidTender); // wait for tendering period using (TendersService service = new TendersService()) { while (!string.Equals(Tender.Status, TenderStatus.ACTIVE_TENDERING, StringComparison.OrdinalIgnoreCase)) { Thread.Sleep(TimeSpan.FromSeconds(30)); Tender = service.GetTender(Tender.Guid).Result; } } }
public async Task EditTender(TenderDTO tenderDTO) { if (!AccessManager.CanCreateTender) { throw new AccessViolationException(); } string acc_token = await AccessManager.GetTenderTokenAsync(tenderDTO.Guid); using (var service = new TendersService()) { var changes = await service.ChangeTender(tenderDTO.Guid, tenderDTO.DropComplexProperties(), acc_token); //await Context.TryUpdateTender(changes); } }
public async Task <Guid?> PublishDraftTender(Guid tenderGuid) { // отримуємо всі звязані з тендером драфти з бази var draftTender = await Context.DraftTenders .Include(t => t.ProcuringEntity) .Include(t => t.ProcuringEntity.AllIdentifiers) .Include(t => t.ProcuringEntity.ContactPoints) .Include(t => t.ContactPointRefs) .Include(t => t.Lots) .Include(t => t.Items) .Include(t => t.Items.Select(i => i.AdditionalClassifications)) .Include(t => t.Features) .Include(t => t.Features.Select(f => f.Values)) .FirstOrDefaultAsync(t => t.Guid == tenderGuid); Protected <Rest.Tender> createdTenderInfo = null; // відправляємо запит в ЦБД using (var tendersService = new TendersService()) { var newTender = draftTender.ToRest(); switch (draftTender.ProcurementMethodType) { case ProcurementMethodType.ABOVE_THRESHOLD_UA_DEFENSE: case ProcurementMethodType.ABOVE_THRESHOLD_EU: newTender.ProcuringEntity.ContactPoints = draftTender.ContactPointRefs.Select(c => new ContactPoint(c.ContactPoint)); break; case ProcurementMethodType.REPORTING: case ProcurementMethodType.NEGOTIATION: case ProcurementMethodType.NEGOTIATION_QUICK: newTender.Features = null; newTender.MinimalStep = null; newTender.Lots = null; goto default; default: newTender.ProcuringEntity.ContactPoint.AvailableLanguage = null; break; } createdTenderInfo = await tendersService.CreateTender(newTender); } // Якщо досі не вискочив вийняток - значить тендер успішно створений в ДБД // Відловимо всі наступні вийнятки - щоб клієнт зміг побачити, що тендер успішно створений try { CreatedTender createdTender = new CreatedTender { Tender = Context.UpdateTender(null, createdTenderInfo.Data), Token = createdTenderInfo.Token, UserOrganizationId = draftTender.ProcuringEntityId }; Context.CreatedTenders.Add(createdTender); Context.DraftTenders.Remove(draftTender); try { await Context.SaveChangesAsync(); } catch (UpdateException) { // На випадок, ящо синхронізація пройшла швидше ніж додавання в базу при створенні Trace.TraceError($"Draft tender {tenderGuid} must be deleted manually."); using (StoreContext tempStore = new StoreContext()) { Tender syncedTender = tempStore.Tenders.FirstOrDefault(t => t.Guid == createdTenderInfo.Data.Guid); if (syncedTender != null) { createdTender.Tender = syncedTender; tempStore.CreatedTenders.Add(createdTender); await tempStore.SaveChangesAsync(); } else { throw; } } } } catch (Exception ex) { Trace.TraceError( $"New tender {createdTenderInfo.Data?.Guid} was created by organization {draftTender.ProcuringEntityId} with token {createdTenderInfo.Token}, but cannot be saved to store. Correct it manually. {ex}"); } return(createdTenderInfo.Data?.Guid); }