public async Task <ActionResult <FarmReadDTO> > CreateFarm(FarmCreateDTO farmCreateDTO)
        {
            var currentUserId = long.Parse(User.Identity.Name);
            var farm          = _mapper.Map <Farm>(farmCreateDTO);

            _context.Farms.Add(farm);
            await _context.SaveChangesAsync();

            var farmWorkersList = await _context.FarmWorkers.Where(l => l.UserId == currentUserId).ToListAsync();

            if (!farmWorkersList.Any())
            {
                var user = await _context.Users.FindAsync(currentUserId);

                user.DefaultFarmId         = farm.Id;
                _context.Entry(user).State = EntityState.Modified;
                await _context.SaveChangesAsync();
            }

            var farmWorker = new FarmWorker
            {
                Role        = WorkerRole.Owner,
                FarmId      = farm.Id,
                UserId      = currentUserId,
                Permissions = "111111111111111111111111111111"
            };

            _context.FarmWorkers.Add(farmWorker);
            await _context.SaveChangesAsync();

            var farmReadDTO = _mapper.Map <FarmReadDTO>(farm);

            return(CreatedAtAction("GetFarm", "Farms", new { id = farm.Id }, farmReadDTO));
        }
        public async Task <ActionResult <long> > ValidateInvitation(string code)
        {
            var invitation = await _context.Invitations.Where(l => l.Code.ToString() == code).FirstOrDefaultAsync();

            if (invitation == null)
            {
                return(NotFound("Neteisingas kodas"));
            }

            if (invitation.ExpirationDate < DateTime.UtcNow)
            {
                return(Forbid());
            }

            var currentUserId = long.Parse(User.Identity.Name);

            var farmWorker = await _context.FarmWorkers.FindAsync(currentUserId, invitation.FarmId);

            if (farmWorker != null)
            {
                return(Forbid());
            }

            var user = await _context.Users.FindAsync(currentUserId);

            if (user.DefaultFarmId == null)
            {
                user.DefaultFarmId         = invitation.FarmId;
                _context.Entry(user).State = EntityState.Modified;
                await _context.SaveChangesAsync();
            }

            farmWorker = new FarmWorker
            {
                Role        = WorkerRole.Assistant,
                FarmId      = invitation.FarmId,
                UserId      = currentUserId,
                Permissions = "000000000000000000000000000000"
            };
            _context.FarmWorkers.Add(farmWorker);
            await _context.SaveChangesAsync();

            return(invitation.FarmId);
        }