예제 #1
0
        public async Task UpdateAssignmentProgressStatusByID(Guid assignmentID, Guid newAssignmentStatusID)
        {
            ClientRelationXref contextRelationship = await santaContext.ClientRelationXrefs.FirstOrDefaultAsync(crxf => crxf.ClientRelationXrefId == assignmentID);

            contextRelationship.AssignmentStatusId = newAssignmentStatusID;

            santaContext.ClientRelationXrefs.Update(contextRelationship);
        }
예제 #2
0
 public async Task CreateClientRelationByID(Guid senderClientID, Guid recipientClientID, Guid eventTypeID, Guid assignmentStatusID)
 {
     Data.Entities.ClientRelationXref contexRelation = new ClientRelationXref()
     {
         ClientRelationXrefId = Guid.NewGuid(),
         SenderClientId       = senderClientID,
         RecipientClientId    = recipientClientID,
         EventTypeId          = eventTypeID,
         // Assignment status should be set to its default value as well
         AssignmentStatusId = assignmentStatusID
     };
     await santaContext.ClientRelationXrefs.AddAsync(contexRelation);
 }
        /// <summary>
        /// Maps a context relationship to a relationship meta
        /// </summary>
        /// <param name="contextRecipientXref"></param>
        /// <returns></returns>
        public static RelationshipMeta MapRelationshipMeta(ClientRelationXref contextXrefRelationship, Guid clientIDMetaToMap)
        {
            List <ClientTagXref> tagXrefList = contextXrefRelationship.SenderClientId != clientIDMetaToMap?contextXrefRelationship.RecipientClient.ClientTagXrefs.ToList() : contextXrefRelationship.SenderClient.ClientTagXrefs.ToList();

            ClientMeta logicMeta = contextXrefRelationship.SenderClientId != clientIDMetaToMap?Mapper.MapClientMeta(contextXrefRelationship.RecipientClient) : Mapper.MapClientMeta(contextXrefRelationship.SenderClient);

            Logic.Objects.RelationshipMeta logicRelationship = new RelationshipMeta()
            {
                relationshipClient   = logicMeta,
                eventType            = Mapper.MapEvent(contextXrefRelationship.EventType),
                clientRelationXrefID = contextXrefRelationship.ClientRelationXrefId,
                tags             = tagXrefList.Select(Mapper.MapTagRelationXref).OrderBy(t => t.tagName).ToList(),
                assignmentStatus = MapAssignmentStatus(contextXrefRelationship.AssignmentStatus),
                removable        = contextXrefRelationship.ChatMessages.Count > 0 ? false : true
            };
            return(logicRelationship);
        }
        public static Logic.Objects.ProfileAssignment MapProfileRecipient(ClientRelationXref contextClientRelationXref)
        {
            Logic.Objects.ProfileAssignment logicProfileRecipient = new ProfileAssignment()
            {
                relationXrefID   = contextClientRelationXref.ClientRelationXrefId,
                recipientClient  = Mapper.MapClientMeta(contextClientRelationXref.RecipientClient),
                recipientEvent   = Mapper.MapEvent(contextClientRelationXref.EventType),
                assignmentStatus = MapAssignmentStatus(contextClientRelationXref.AssignmentStatus),

                address = new Address
                {
                    addressLineOne = contextClientRelationXref.RecipientClient.AddressLine1,
                    addressLineTwo = contextClientRelationXref.RecipientClient.AddressLine2,
                    city           = contextClientRelationXref.RecipientClient.City,
                    country        = contextClientRelationXref.RecipientClient.Country,
                    state          = contextClientRelationXref.RecipientClient.State,
                    postalCode     = contextClientRelationXref.RecipientClient.PostalCode
                },
                responses = contextClientRelationXref.RecipientClient.SurveyResponse.Select(Mapper.MapResponse).ToList()
            };
            return(logicProfileRecipient);
        }
        /// <summary>
        /// Maps the information of a message history with the contents of a relationship, and the viewer subject client information
        /// </summary>
        /// <param name="contextRelationshipXref"></param>
        /// <param name="logicSubjectClient"></param>
        /// <returns></returns>
        public static Logic.Objects.MessageHistory MapHistoryInformation(ClientRelationXref contextRelationshipXref, BaseClient logicSubjectClient, bool unloaded)
        {
            List <Message> logicListRecieverMessages = new List <Message>();
            List <Message> logicListSubjectMessages  = new List <Message>();

            if (!unloaded)
            {
                if (logicSubjectClient.isAdmin)
                {
                    logicListSubjectMessages = contextRelationshipXref.ChatMessage
                                               .Select(Mapper.MapMessage)
                                               .OrderBy(dt => dt.dateTimeSent)
                                               .Where(m => m.fromAdmin)
                                               .ToList();

                    logicListRecieverMessages = contextRelationshipXref.ChatMessage
                                                .Select(Mapper.MapMessage)
                                                .OrderBy(dt => dt.dateTimeSent)
                                                .Where(m => !m.fromAdmin)
                                                .ToList();
                }
                else
                {
                    logicListSubjectMessages = contextRelationshipXref.ChatMessage
                                               .Select(Mapper.MapMessage)
                                               .OrderBy(dt => dt.dateTimeSent)
                                               .Where(m => !m.fromAdmin && m.senderClient.clientId == logicSubjectClient.clientID)
                                               .ToList();

                    logicListRecieverMessages = contextRelationshipXref.ChatMessage
                                                .Select(Mapper.MapMessage)
                                                .OrderBy(dt => dt.dateTimeSent)
                                                .Where(m => m.fromAdmin)
                                                .ToList();
                }
            }



            MessageHistory logicHistory = new MessageHistory()
            {
                relationXrefID   = contextRelationshipXref.ClientRelationXrefId,
                eventType        = MapEvent(contextRelationshipXref.EventType),
                assignmentStatus = MapAssignmentStatus(contextRelationshipXref.AssignmentStatus),

                subjectClient            = MapClientChatMeta(logicSubjectClient),
                conversationClient       = MapClientChatMeta(contextRelationshipXref.SenderClient),
                assignmentRecieverClient = MapClientChatMeta(contextRelationshipXref.RecipientClient),
                assignmentSenderClient   = MapClientChatMeta(contextRelationshipXref.SenderClient),

                subjectMessages = unloaded ? new List <Message>() : logicListSubjectMessages,

                recieverMessages = unloaded ? new List <Message>() : logicListRecieverMessages,

                unreadCount = logicListRecieverMessages.Where(m => m.isMessageRead == false).ToList().Count()
            };

            foreach (Message logicMessage in logicHistory.subjectMessages)
            {
                logicMessage.subjectMessage = true;
            }

            return(logicHistory);
        }