public HttpResponseMessage Post(Conversation conversation)
        {
            var convo = _repo.Find<Conversation>(conversation.Key);
            if (convo == null) {
                try {
                    ApplicationUser currUser = _repo.Query<ApplicationUser>().Where(a => a.UserName == User.Identity.Name).Single();
                    Family family = _repo.Find<Family>(conversation.WhichFam.Key);
                    convo = new Conversation {
                        CreatedBy = currUser,
                        CreatedDate = DateTime.Now,
                        IsEvent = false,
                        Recurs = false,
                        Topic = conversation.Topic,
                        WhichFam = family
                    };
                    _service.SetConvoKey(convo);
                    if(family.ConversationList == null) {
                        family.ConversationList = new List<Conversation>();
                    }
                    family.ConversationList.Add(convo);
                    _repo.Add<Conversation>(convo);
                    _repo.SaveChanges();
                    return Request.CreateResponse(HttpStatusCode.Created, convo);

                } catch {
                    return Request.CreateResponse(HttpStatusCode.BadRequest);
                }
            } else {
                try {
                    //Attenders
                    if (convo.Attenders == null) {
                        convo.Attenders = new List<ConversationsAttendedByMembers>();
                    }
                    foreach (var user in conversation.Attenders) {
                        if (!convo.Attenders.Contains(user)) {
                            convo.Attenders.Add(user);
                        }
                    }

                    //ExpirationDate
                    convo.ExpirationDate = conversation.ExpirationDate ?? convo.ExpirationDate;

                    //IsEvent
                    convo.IsEvent = conversation.IsEvent;

                    //MessageList
                    if (convo.MessageList == null) {
                        convo.MessageList = new List<Message>();
                    }
                    foreach (var msg in conversation.MessageList) {
                        if (!convo.MessageList.Contains(msg)) {
                            convo.MessageList.Add(msg);
                        }
                    }

                    //Recurs
                    convo.Recurs = conversation.Recurs;

                    //VisibleTo
                    if (convo.VisibleTo == null) {
                        convo.VisibleTo = new List<ConversationsVisibleToMembers>();
                    }
                    foreach (var user in conversation.VisibleTo) {
                        if (!convo.VisibleTo.Contains(user)) {
                            convo.VisibleTo.Add(user);
                        }
                    }

                    _repo.SaveChanges();
                    return Request.CreateResponse(HttpStatusCode.OK, convo);

                } catch {
                    return Request.CreateResponse(HttpStatusCode.BadRequest);
                }

            }
        }
예제 #2
0
 public void SetConvoKey(Conversation convo)
 {
     convo.Key = "C" + GetKey();
 }