protected override async Task <Unit> Handle(RequestContext context, DeleteSupplementCommand request, CancellationToken cancellationToken) { var supplement = await db.Supplements.FindAsync(new object[] { request.SupplementId }, cancellationToken); if (supplement is null) { return(Unit.Value); } var inUse = await db.Points.AnyAsync(p => p.SupplementId == request.SupplementId, cancellationToken : cancellationToken); if (inUse) { throw new BadRequestException("Засіб використовується."); } db.Supplements.Remove(supplement); await db.SaveChangesAsync(cancellationToken); await fileStorage.Remove(supplement.CertificateFilePath); cache.Remove($"{nameof(Supplement)}-{context.CurrentUser.UserId}"); return(Unit.Value); }
protected override async Task <Guid> Handle(RequestContext context, UpsertTrapCommand request, CancellationToken cancellationToken) { Trap trap; if (request.TrapId.HasValue) { trap = await db .Traps .Include(t => t.Fields).FirstOrDefaultAsync(t => t.Id == request.TrapId.Value, cancellationToken); } else { trap = new Trap { ProviderId = context.CurrentUser.UserId }; db.Traps.Add(trap); } trap.TrapName = request.TrapName; trap.Color = request.Color; var inputFieldList = request.Fields.Where(f => f.FieldId.HasValue).ToDictionary(f => f.FieldId.Value); foreach (var field in trap.Fields.ToList()) { if (inputFieldList.ContainsKey(field.Id)) { continue; } trap.RemoveField(field.Id); } var existingFieldList = trap.Fields.ToDictionary(f => f.Id); foreach (var inputField in request.Fields) { trap.SetField( inputField.FieldId, inputField.FieldName, inputField.Order, inputField.FieldType, inputField.OptionList, inputField.PercentStep, inputField.AdminEditable); } trap.AssertFieldsUnique(); await db.SaveChangesAsync(cancellationToken); cache.Remove($"{nameof(Trap)}-{context.CurrentUser.UserId}"); return(trap.Id); }
protected override async Task <Unit> Handle(RequestContext context, DeleteErrandCommand request, CancellationToken cancellationToken) { var errand = await db.Errands.FirstOrDefaultAsync(e => e.Id == request.ErrandId, cancellationToken); if (errand is null) { return(Unit.Value); } db.Errands.Remove(errand); await db.SaveChangesAsync(cancellationToken); return(Unit.Value); }
public async Task<Unit> Handle(DeletePerimeterCommand request, CancellationToken cancellationToken) { var perimeter = await db.Perimeters.FindAsync(new object[] { request.PerimeterId }, cancellationToken); if (perimeter is null) return Unit.Value; var isUsed = await db .Errands .AnyAsync(e => e.FacilityId == perimeter.FacilityId, cancellationToken: cancellationToken); if (isUsed) throw new BadRequestException("Периметр використовується."); db.Perimeters.Remove(perimeter); await db.SaveChangesAsync(cancellationToken); return Unit.Value; }
protected override async Task <Unit> Handle(RequestContext context, DeleteTrapCommand request, CancellationToken cancellationToken) { var trap = await db.Traps.FindAsync(new object[] { request.TrapId }, cancellationToken); if (trap is null) { return(Unit.Value); } var inUse = await db.Points.AnyAsync(p => p.TrapId == request.TrapId, cancellationToken : cancellationToken); if (inUse) { throw new BadRequestException("Пастка використовується."); } db.Traps.Remove(trap); await db.SaveChangesAsync(cancellationToken); cache.Remove($"{nameof(Trap)}-{context.CurrentUser.UserId}"); return(Unit.Value); }
public async Task <Unit> Handle(DeleteFacilityCommand request, CancellationToken cancellationToken) { var facility = await db.Facilities.FindAsync(new object[] { request.FacilityId }, cancellationToken); if (facility is null) { return(Unit.Value); } var isUsed = await db .Errands .AnyAsync(e => e.FacilityId == request.FacilityId, cancellationToken : cancellationToken); if (isUsed) { throw new BadRequestException("Об'єкт використовується."); } db.Facilities.Remove(facility); await db.SaveChangesAsync(cancellationToken); return(Unit.Value); }