public async Task <IHttpActionResult> GetClientUser(Guid id) { ClientUser clientUser = await db.ClientUsers.FindAsync(id); if (clientUser == null) { return(NotFound()); } clientUser.Enrollments = (from enrollment in db.Enrollments where enrollment.ClientUserId == clientUser.Id select enrollment).ToList(); var client = new ClientUserDTO(); client.Id = clientUser.Id; client.UserName = clientUser.UserName; client.TrendsRoleId = clientUser.TrendsRoleId; if (clientUser.Enrollments.Count > 0) { var firstEnt = clientUser.Enrollments[0].EnterpriseId; var userEnterprise = (from enterprise in db.Enterprises where enterprise.Id == firstEnt select enterprise).FirstOrDefault(); client.EnterpriseNumber = userEnterprise.EnterpriseNumber; foreach (var e in clientUser.Enrollments) { var serviceOrder = (from so in db.ServiceOrders where so.Id == e.ServiceOrderId select so).FirstOrDefault(); var customer = (from c in db.Customers where c.Id == e.CustomerId select c).FirstOrDefault(); if (serviceOrder != null && !client.ServiceOrders.Contains(serviceOrder.ServiceOrderNumber)) { client.ServiceOrders.Add(serviceOrder.ServiceOrderNumber); } if (customer != null && !client.CustomerPrograms.Contains(customer.CID)) { client.CustomerPrograms.Add(customer.CID); } } } return(Ok(client)); }
/// <summary> /// </summary> /// <param name="clientUserDTO"></param> /// <returns></returns> public ClientUserDTO Create(ClientUserDTO clientUserDTO) { // first, find if there is already a row with this clientId and userId var clientUser = (from cu in _unitOfWork.ClientUsers.GetAll() where cu.ClientId == clientUserDTO.ClientId && cu.UserId == clientUserDTO.UserId select cu ).SingleOrDefault(); // if it doesn't exist, create a new row if (clientUser != null) { return(Update(clientUser.Id, clientUserDTO)); } //otherwise re-enable the existing one clientUser = AutoMapper.Mapper.Map <ClientUser>(clientUserDTO); clientUser.CreatedByUserId = _currentUserId; if (clientUser.CreatedDate != null) { clientUser.CreatedDate = DateTime.UtcNow; } clientUser.Status = Status.Active; _unitOfWork.ClientUsers.Add(clientUser); // History var clientUserHistory = AutoMapper.Mapper.Map <ClientUserHistory>(clientUser); clientUserHistory.ModifiedByUserId = _currentUserId; clientUserHistory.ModifiedDate = clientUser.CreatedDate; clientUserHistory.Status = Status.Active; _unitOfWork.ClientUsersHistory.Add(clientUserHistory); _unitOfWork.SaveChanges(); return(clientUserDTO); }
/// <summary> /// </summary> /// <param name="id"></param> /// <param name="clientUserDTO"></param> /// <returns></returns> public ClientUserDTO Update(int id, ClientUserDTO clientUserDTO) { // get the existing clientUser var clientUser = _unitOfWork.ClientUsers.Get(id); // merge the DTO AutoMapper.Mapper.Map(clientUserDTO, clientUser); _unitOfWork.ClientUsers.Update(clientUser); // History var clientUserHistory = AutoMapper.Mapper.Map <ClientUserHistory>(clientUser); clientUserHistory.ModifiedByUserId = _currentUserId; clientUserHistory.ModifiedDate = DateTime.UtcNow; clientUserHistory.Status = clientUser.Status; _unitOfWork.ClientUsersHistory.Add(clientUserHistory); _unitOfWork.SaveChanges(); return(clientUserDTO); }