public PublicReplyItem PublicReplyViewModel2PublicReplyItem(CommunicationItemPublicReplyViewModel viewModel)
        {
            PublicReplyItem retVal = new PublicReplyItem();

            retVal.AuthorName = viewModel.AuthorName;
            retVal.Body       = viewModel.Body;
            retVal.Title      = viewModel.Title;

            if (viewModel.Id != null)
            {
                retVal.CommunicationItemId = viewModel.Id;
            }

            return(retVal);
        }
        /// <summary>
        /// Add communication item to CurrentCase
        /// </summary>
        /// <returns></returns>
        private void GetCommunicationItemsFromCaseCommunications(ICustomerRepository repository)
        {
            var adaptor = new CommunicationAdaptor();

            if (CaseCommunications != null && CaseCommunications.Items != null)
            {
                var result = new List<CommunicationItem>();

                result = result.Union(CaseCommunications.Items
                                                        .Where(item => item.Type == CommunicationItemType.PublicReply)
                                                        .Where(item => item.State != CommunicationItemState.Deleted)
                                                        .Select(
                                                            item =>
                                                            adaptor.PublicReplyViewModel2PublicReplyItem(
                                                                item as CommunicationItemPublicReplyViewModel))).ToList();

                foreach (var item in result)
                {
                    var itemForUpdate =
                        CaseCommunicationItems.SingleOrDefault(
                            comItem => comItem.CommunicationItemId == item.CommunicationItemId);
                    if (itemForUpdate == null)
                    {
                        item.CaseId = InnerItem.CaseId;
                        CaseCommunicationItems.Add(item);
                        repository.Add(item);
                    }
                }

                //if messsage was writed in textbox, but Enter was not pressed
                //then create new publicReplyItem and save it;
                if (!string.IsNullOrEmpty(CaseCommunications.NewBody))
                {
                    var activeCommand = CaseCommunications.ToolBarCommmands.SingleOrDefault(c => c.IsActive);

                    if ((CommunicationItemType)activeCommand.CommandParametr == CommunicationItemType.PublicReply)
                    {
                        PublicReplyItem publicReplyItem = new PublicReplyItem();
                        publicReplyItem.AuthorName = _authorName;
                        publicReplyItem.Body = CaseCommunications.NewBody;
                        publicReplyItem.Title = InnerItem.Title;
                        publicReplyItem.Created =
                            (DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local)).ToUniversalTime();
                        publicReplyItem.LastModified = publicReplyItem.Created;
                        publicReplyItem.CaseId = InnerItem.CaseId;
                        CaseCommunicationItems.Add(publicReplyItem);
                        repository.Add(publicReplyItem);
                    }

                    OnUIThread(() =>
                        {
                            if (activeCommand != null)
                            {
                                activeCommand.Command.Execute(CaseCommunications.NewBody);
                            }
                        });
                }
            }
        }
        public CommunicationItemPublicReplyViewModel PublicReply2PublicReplyViewModel(PublicReplyItem item)
        {
            CommunicationItemPublicReplyViewModel retVal=new CommunicationItemPublicReplyViewModel();

            retVal.Id = item.CommunicationItemId;
            retVal.AuthorName = item.AuthorName;
            retVal.Body = item.Body;
            retVal.LastModified = item.LastModified;

            return retVal;
        }
        public PublicReplyItem PublicReplyViewModel2PublicReplyItem(CommunicationItemPublicReplyViewModel viewModel)
        {
            PublicReplyItem retVal=new PublicReplyItem();

            retVal.AuthorName = viewModel.AuthorName;
            retVal.Body = viewModel.Body;
            retVal.Title = viewModel.Title;

            if (viewModel.Id != null)
                retVal.CommunicationItemId = viewModel.Id;

            return retVal;
        }
        public CommunicationItemPublicReplyViewModel PublicReply2PublicReplyViewModel(PublicReplyItem item)
        {
            CommunicationItemPublicReplyViewModel retVal = new CommunicationItemPublicReplyViewModel();

            retVal.Id           = item.CommunicationItemId;
            retVal.AuthorName   = item.AuthorName;
            retVal.Body         = item.Body;
            retVal.LastModified = item.LastModified;

            return(retVal);
        }