Exemplo n.º 1
0
        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);
        }