public VoipCallHistoryWrapper(VoipCallHistory history) { ID = history.ID; AnsweredBy = history.AnsweredBy; WaitTime = history.AnswerDate.Subtract(history.QueueDate).Seconds; HoldTime = 0; WrapUpTime = history.EndDialDate.Subtract(history.AnswerDate).Seconds; RecordUrl = history.RecordUrl; RecordDuration = history.RecordDuration; Cost = history.Price; }
public VoipCallHistory SaveCallHistory(string callId, string parentCallId, Guid? answeredBy, string recordUrl, int recordDuration, decimal? price, ApiDateTime queueDate = null, ApiDateTime answerDate = null, ApiDateTime endDialDate = null) { var dao = DaoFactory.GetVoipDao(); var parentCall = dao.GetCall(parentCallId).NotFoundIfNull(); var listItemDao = DaoFactory.GetListItemDao(); var call = dao.GetCallHistoryById(parentCallId, callId); if (call == null) { if (parentCallId != callId) call = dao.GetCallHistoryById(parentCallId, parentCallId); if (call == null) { call = new VoipCallHistory { ID = callId }; } else { call.ID = callId; dao.UpdateCallHistoryId(call); } } call.ParentID = parentCallId; if (answeredBy.HasValue) { call.AnsweredBy = answeredBy.Value; } call.QueueDate = Update.IfNotEmptyAndNotEquals(call.QueueDate, queueDate); call.AnswerDate = Update.IfNotEmptyAndNotEquals(call.AnswerDate, answerDate); if (endDialDate != null) { call.EndDialDate = endDialDate; var note = parentCall.Status == VoipCallStatus.Incoming ? CRMContactResource.HistoryVoipIncomingNote : CRMContactResource.HistoryVoipOutcomingNote; var category = listItemDao.GetByTitle(ListType.HistoryCategory, CRMCommonResource.HistoryCategory_Call); if (category == null) { category = new ListItem(CRMCommonResource.HistoryCategory_Call, "event_category_call.png"); category.ID = listItemDao.CreateItem(ListType.HistoryCategory, category); } AddHistoryTo(null, 0, parentCall.ContactId, string.Format(note, call.EndDialDate.Subtract(call.AnswerDate).Seconds.ToString(CultureInfo.InvariantCulture)), category.ID, (ApiDateTime)(DateTime.UtcNow), null, null); } call.RecordUrl = Update.IfNotEmptyAndNotEquals(call.RecordUrl, recordUrl); if (recordDuration != 0) { call.RecordDuration = recordDuration; } if (call.Price == 0 && price.HasValue) { call.Price = price.Value; VoipPaymentSettings.Increment((int)(price.Value * 1000)); } return dao.SaveOrUpdateCallHistory(call); }