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);
            }
Ejemplo n.º 2
0
            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);
            }