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); }