public void WebApi_GetPageFilteredByMinDays() { using (var client = GetClient()) { var person1 = AddPersonAndGetItWithId(); var call1 = new CallDetails() { CallDate = DateTime.Now.AddDays(-30), CallReport = "Отчет для фильтрации" }; var person2 = AddPersonAndGetItWithId(); person2.FirstName = person1.FirstName; using (var res = client.PutAsJsonAsync("api/persons", person2).Result) { } var call2 = new CallDetails() { CallDate = DateTime.Now.AddDays(-10), CallReport = "Отчет для фильтрации" }; using (var res = client.PostAsJsonAsync($"api/persons/{person1.Id}/calls", call1).Result) { } using (var res = client.PostAsJsonAsync($"api/persons/{person2.Id}/calls", call2).Result) { } using (var res = client.GetAsync($"api/persons?MinDaysAfterLastCall=30&PageSize=100&NameFilter={person1.FirstName}").Result) { Assert.IsTrue(res.IsSuccessStatusCode, $"Неожиданный код ответа {res.StatusCode}"); var pList = res.Content.ReadAsAsync <IEnumerable <PersonDetails> >().Result; Assert.AreEqual(1, pList.Count(), $"Страница не содержит ожидаемого количества данных {pList.Count()}"); Assert.AreEqual(person1.FirstName, pList.First().FirstName, "Получены некорректные данные"); Assert.AreEqual(person1.LastName, pList.First().LastName, "Получены некорректные данные"); } } }
public async Task ShouldGetEnumValueWithDetails() { //Arrange var api = CreateProxy(); CallDetails <TestEnum> res = null; //Act try { res = await api.GetEnumVal2WithDetails(); } catch (DetailedResponseProcessingException <CallDetails <TestEnum> > e) { _output.WriteLine("RequestDump:"); _output.WriteLine(e.CallDetails.RequestDump); _output.WriteLine("ResponseDump:"); _output.WriteLine(e.CallDetails.ResponseDump); } if (res != null) { _output.WriteLine("RequestDump:"); _output.WriteLine(res.RequestDump); _output.WriteLine("ResponseDump:"); _output.WriteLine(res.ResponseDump); } //Assert Assert.NotNull(res); Assert.Equal(HttpStatusCode.OK, res.StatusCode); Assert.Equal(TestEnum.Value2, res.ResponseContent); }
private void InsertCallDetails(int callId, MessageType type) { CallDetails callDetails = new CallDetails(callId, type); sortedList.Add(callDetails); CheckPending(); }
private void CheckPending() { if (sortedList.Count() == 0) { return; } CallDetails callDetails = this.PopFirstCurrentCall(); if (callDetails != null) { string newCallDetailQuery = String.Format(@"insert into dbo.CallDetails (CallId, Value) values ({0}, '{1}')", callDetails.ParentID, callDetails.Value); using (SqlConnection sqlConnection = new SqlConnection(connectionString)) { sqlConnection.Open(); using (SqlCommand cmd = new SqlCommand(newCallDetailQuery)) { cmd.Connection = sqlConnection; cmd.ExecuteNonQuery(); } } if (callDetails.messageType == MessageType.ResponseFromSoap) { currentCallId++; } CheckPending(); } }
private long RegisterCall(CallDetails callDetails) { long requestId = mPendingCalls.Add(callDetails); callDetails.RequestId = requestId; return(requestId); }
public IList <CallDetails> PrepareData(string startDate, string endDate) { //Prepaid hatlar icin parametresiz sorgu zaten must bool subscriptionStatus = GetSubscriptionStatus((Parameter.UserType)Enum.Parse(typeof(Parameter.UserType), "prep")); HttpContext.Current.Session["IsSubscriptionActive"] = subscriptionStatus; CallDetailsQueryResponse resp = WebServiceLoader.CallDetailsQuery(startDate, endDate); IList <CallDetail> srvCallDetail = resp.PrepaidCallDetailsSuccessPage.CallDetails; foreach (var item in srvCallDetail) { var model = new CallDetails(); model.Amount = item.GetUsedCounter; model.DataVolume = item.GetVolume; model.DateDisplay = item.GetDate + " " + item.GetHour; model.Description = item.GetDescription; model.OpAddress = item.GetCalledNumber; Data.Add(model); } return(Data); }
void Log <T>(CallDetails <T> details) { _output.WriteLine("=== REQUEST ==="); _output.WriteLine(details.RequestDump); _output.WriteLine("=== RESPONSE ==="); _output.WriteLine(details.ResponseDump); _output.WriteLine("=== END ==="); }
public void CallError(long requestId, TMessage details, string error, TMessage[] arguments, TMessage argumentsKeywords) { CallDetails callDetails = TryGetCallDetails(requestId); if (callDetails != null) { callDetails.Caller.Error(this.Formatter, details, error, arguments, argumentsKeywords); } }
public void Result(long requestId, ResultDetails details, TMessage[] arguments) { CallDetails callDetails = TryGetCallDetails(requestId, details); if (callDetails != null) { callDetails.Caller.Result(this.Formatter, details, arguments); } }
public void Result(long requestId, ResultDetails details, TMessage[] arguments, IDictionary <string, TMessage> argumentsKeywords) { CallDetails callDetails = TryGetCallDetails(requestId, details); if (callDetails != null) { callDetails.Caller.Result(this.Formatter, details, arguments, argumentsKeywords); } }
public void CallError(long requestId, TMessage details, string error) { CallDetails callDetails = TryGetCallDetails(requestId); if (callDetails != null) { callDetails.Caller.Error(this.Formatter, details, error); } }
/// <summary> /// Initializes a new instance of <see cref="TestCallDetails{TRes}"/> /// </summary> public TestCallDetails(CallDetails <TRes> baseCallDetails) { base.IsUnexpectedStatusCode = baseCallDetails.IsUnexpectedStatusCode; base.RequestDump = baseCallDetails.RequestDump; base.RequestMessage = baseCallDetails.RequestMessage; base.ResponseContent = baseCallDetails.ResponseContent; base.ResponseDump = baseCallDetails.ResponseDump; base.ResponseMessage = baseCallDetails.ResponseMessage; base.StatusCode = baseCallDetails.StatusCode; }
private CallDetails PopFirstCurrentCall() { CallDetails result = sortedList.Where(x => x.ParentID == currentCallId).OrderBy(x => (int)x.messageType).First(); if (result != null) { sortedList.Remove(result); } return(result); }
public void Domain_WithTestDB_CallsCRUD() { // для тестирования указываем название тестовой бд, которая будет пересоздаваться var storage = new CallCenterStorage("TestsDB"); var callCenter = new CallCenterService(storage); var person = TestData.GetTestPersons()[0]; var call = TestData.GetTestCalls()[0]; callCenter.AddPersonAsync(person).Wait(); var pListItem = callCenter.GetPersonsAsync(new PersonsFilters() { NameFilter = person.FirstName }).Result[0]; Assert.IsNotNull(pListItem); var pCalls = callCenter.GetCalls(pListItem.Id); Assert.AreEqual(0, pCalls.Count); // Добавление отчета callCenter.AddCallAsync(call, pListItem.Id).Wait(); pCalls = callCenter.GetCalls(pListItem.Id); Assert.AreEqual(1, pCalls.Count, "Отчет не добавлен"); Assert.AreEqual(call.CallDate, pCalls[0].CallDate, "Данные не сохранились (CallDate)"); Assert.AreEqual(call.CallReport, pCalls[0].CallReport, "Данные не сохранились (CallReport)"); Assert.AreEqual(call.OrderCost, pCalls[0].OrderCost, "Данные не сохранились (OrderCost)"); // Обновление отчета call = pCalls[0]; var newCall = new CallDetails() { Id = call.Id, CallDate = DateTime.Now.AddDays(-1), CallReport = "call report", OrderCost = 999.99 }; callCenter.UpdateCallAsync(newCall).Wait(); pCalls = callCenter.GetCalls(pListItem.Id); Assert.AreEqual(1, pCalls.Count, "Неправильное количество отчетов"); Assert.AreEqual(newCall.CallDate, pCalls[0].CallDate, "Данные не сохранились (CallDate)"); Assert.AreEqual(newCall.CallReport, pCalls[0].CallReport, "Данные не сохранились (CallReport)"); Assert.AreEqual(newCall.OrderCost, pCalls[0].OrderCost, "Данные не сохранились (OrderCost)"); // удаление отчета callCenter.DeleteCallAsync(pCalls[0].Id).Wait(); pCalls = callCenter.GetCalls(person.Id); Assert.AreEqual(0, pCalls.Count, "Отчет не удален"); // newCall = new CallDetails() { CallDate = DateTime.Now.AddDays(-1), CallReport = "call report", OrderCost = 999.99 }; callCenter.AddCallAsync(newCall, pListItem.Id).Wait(); pCalls = callCenter.GetCalls(pListItem.Id); callCenter.DeleteCallAsync(pCalls[0].Id).Wait(); pCalls = callCenter.GetCalls(pListItem.Id); Assert.AreEqual(0, pCalls.Count, "Отчет не удален"); }
public void WebApi_AddCall() { using (var client = GetClient()) { var person = AddPersonAndGetItWithId(); var call = new CallDetails() { CallDate = DateTime.Now.AddDays(-10), CallReport = "Звонок прошел на удивление хорошо", OrderCost = 489.54 }; using (var resp = client.PostAsJsonAsync($"api/persons/{person.Id}/calls", call).Result) { Assert.IsTrue(resp.IsSuccessStatusCode, $"При добавлении отчета получен неожиданный ответ - {resp.StatusCode}"); } Guid fcId; using (var resp = client.GetAsync($"api/persons/{person.Id}/calls").Result) { Assert.IsTrue(resp.IsSuccessStatusCode, $"При добавлении отчета получен неожиданный ответ - {resp.StatusCode}"); var c = resp.Content.ReadAsAsync <IEnumerable <CallDetails> >().Result; Assert.IsNotNull(c, "После обновления записи не удалось загрузить данные"); Assert.AreEqual(1, c.Count(), $"Неожиданное количество отчетов после добавления: {c.Count()}"); Assert.AreEqual(call.CallDate.Date, c.First().CallDate.Date, "Получены некорректные данные (CallDate)"); Assert.AreEqual(call.CallReport, c.First().CallReport, "Получены некорректные данные (CallReport)"); Assert.AreEqual(call.OrderCost, c.First().OrderCost, "Получены некорректные данные (OrderCost)"); fcId = c.First().Id; } call = new CallDetails() { CallDate = DateTime.Now.AddDays(-5), CallReport = "Звонок прошел нормально", OrderCost = 0 }; using (var resp = client.PostAsJsonAsync($"api/persons/{person.Id}/calls", call).Result) { Assert.IsTrue(resp.IsSuccessStatusCode, $"При добавлении отчета получен неожиданный ответ - {resp.StatusCode}"); } using (var resp = client.GetAsync($"api/persons/{person.Id}/calls").Result) { Assert.IsTrue(resp.IsSuccessStatusCode, $"При добавлении отчета получен неожиданный ответ - {resp.StatusCode}"); var c = resp.Content.ReadAsAsync <IEnumerable <CallDetails> >().Result; Assert.IsNotNull(c, "После обновления записи не удалось загрузить данные"); Assert.AreEqual(2, c.Count(), $"Неожиданное количество отчетов после добавления: {c.Count()}"); Assert.AreEqual(call.CallDate.Date, c.FirstOrDefault(cl => cl.Id != fcId).CallDate.Date, "Получены некорректные данные (CallDate)"); Assert.AreEqual(call.CallReport, c.FirstOrDefault(cl => cl.Id != fcId).CallReport, "Получены некорректные данные (CallReport)"); Assert.AreEqual(call.OrderCost, c.FirstOrDefault(cl => cl.Id != fcId).OrderCost, "Получены некорректные данные (OrderCost)"); } } }
public static string MakeCall([ActivityTrigger] CallInfo callInfo, [Table("MadeCalls", "AzureWebJobStorage")] out CallDetails calldetails, ILogger log) { log.LogWarning($"MakeCall {callInfo.Numbers}"); var madeCallId = Guid.NewGuid().ToString("N"); calldetails = new CallDetails { PartitionKey = "MadeCalls", RowKey = madeCallId, OrchestrationId = callInfo.InstanceId }; string accountSid = Environment.GetEnvironmentVariable("accountSid"); string authToken = Environment.GetEnvironmentVariable("authToken"); TwilioClient.Init(accountSid, authToken); // *********************************************************************************************************** //TODO figure out how best to call this and loop thru the numbers instead of hardcoding the first number below // *********************************************************************************************************** var to = new PhoneNumber(callInfo.Numbers[0]); //var to = new PhoneNumber(callInfo.NumberCalled); var from = new PhoneNumber(Environment.GetEnvironmentVariable("twilioDemoNumber")); log.LogWarning($"InstanceId {callInfo.InstanceId}"); //var statusCallbackUri = new Uri(string.Format(Environment.GetEnvironmentVariable("statusCallBackUrl"), madeCallId)); var statusCallbackUri = new Uri(string.Format(Environment.GetEnvironmentVariable("statusCallBackUrl"), callInfo.InstanceId)); log.LogWarning($"statusCallbackUri {statusCallbackUri}"); var statusCallbackEvent = new List <string> { "answered" }; log.LogWarning($"About to make a call to {to} from {from}."); var call = CallResource.Create( to, from, url: new Uri("http://demo.twilio.com/docs/voice.xml"), statusCallback: statusCallbackUri, statusCallbackMethod: Twilio.Http.HttpMethod.Post, statusCallbackEvent: statusCallbackEvent); return(madeCallId); }
public async Task AddCallAsync(CallDetails call, Guid personId) { var pers = _storage.Persons.Find(personId); if (pers != null) { _storage.Calls.Add(new Call { CallDate = call.CallDate, OrderCost = call.OrderCost, CallReport = call.CallReport, PersonId = personId }); await _storage.SaveChangesAsync(); } }
public async Task ShouldCallAndGetDetails() { //Arrange var api = CreateProxy(); //Act CallDetails <string> call = await api.CallEchoAndGetDetails("foo"); //Assert Assert.Equal(HttpStatusCode.OK, call.StatusCode); Assert.Equal("foo", call.ResponseContent); Assert.Equal(3, call.ResponseMessage.Content.Headers.ContentLength); }
/// <summary> /// Gets web-call dump for test output /// </summary> /// <typeparam name="TRes">call result</typeparam> /// <param name="call">web call</param> /// <param name="contractType">API contract</param> /// <returns>string dump</returns> public static string ToTestDump <TRes>(this CallDetails <TRes> call, Type contractType = null) { if (call == null) { throw new ArgumentNullException(nameof(call)); } var sb = new StringBuilder(); WriteToString(call, sb, contractType); return(sb.ToString()); }
public void Invoke(IWampRawRpcOperationClientCallback caller, CallOptions options, string procedure, object[] arguments, IDictionary <string, object> argumentsKeywords) { if (!IsConnected) { throw new WampSessionNotEstablishedException(); } CallDetails callDetails = new CallDetails(caller, options, procedure, arguments, argumentsKeywords); long requestId = RegisterCall(callDetails); mProxy.Call(requestId, options, procedure, arguments, argumentsKeywords); }
public async Task ShouldGetBinaryWithDetails() { //Arrange var api = CreateProxy(); //Act CallDetails <byte[]> call = await api.GetBinAndGetDetails(); var respStr = Encoding.UTF8.GetString(call.ResponseContent); //Assert Assert.Equal(HttpStatusCode.OK, call.StatusCode); Assert.Equal("foo", respStr); }
public void WebApi_UpdateCall() { using (var client = GetClient()) { var person = AddPersonAndGetItWithId(); var call = new CallDetails() { CallDate = DateTime.Now.AddDays(-7), CallReport = "Предложение по новой коллекции понравилось клиенту, но он решил заказать предыдущий товар", OrderCost = 229.99 }; using (var resp = client.PostAsJsonAsync($"api/persons/{person.Id}/calls", call).Result) { Assert.IsTrue(resp.IsSuccessStatusCode, $"При добавлении отчета получен неожиданный ответ - {resp.StatusCode}"); } using (var resp = client.GetAsync($"api/persons/{person.Id}/calls").Result) { Assert.IsTrue(resp.IsSuccessStatusCode, $"При добавлении отчета получен неожиданный ответ - {resp.StatusCode}"); var calls = resp.Content.ReadAsAsync <IEnumerable <CallDetails> >().Result; Assert.IsNotNull(calls, "После обновления записи не удалось загрузить данные"); Assert.AreEqual(1, calls.Count(), $"Неожиданное количество отчетов после добавления: {calls.Count()}"); Assert.AreEqual(call.CallDate.Date, calls.First().CallDate.Date, "Получены некорректные данные (CallDate)"); Assert.AreEqual(call.CallReport, calls.First().CallReport, "Получены некорректные данные (CallReport)"); Assert.AreEqual(call.OrderCost, calls.First().OrderCost, "Получены некорректные данные (OrderCost)"); call.Id = calls.First().Id; } call.CallDate = DateTime.Now.AddDays(-3); call.CallReport = "Был сделан заказ"; call.OrderCost = 300; using (var resp = client.PutAsJsonAsync($"api/persons/{person.Id}/calls", call).Result) { Assert.IsTrue(resp.IsSuccessStatusCode, $"При обновлении отчета получен неожиданный ответ - {resp.StatusCode}"); } using (var resp = client.GetAsync($"api/persons/{person.Id}/calls").Result) { Assert.IsTrue(resp.IsSuccessStatusCode, $"При добавлении отчета получен неожиданный ответ - {resp.StatusCode}"); var calls = resp.Content.ReadAsAsync <IEnumerable <CallDetails> >().Result; Assert.IsNotNull(calls, "После обновления записи не удалось загрузить данные"); Assert.AreEqual(1, calls.Count(), $"Неожиданное количество отчетов после добавления: {calls.Count()}"); Assert.AreEqual(call.CallDate.Date, calls.First().CallDate.Date, "Получены некорректные данные (CallDate)"); Assert.AreEqual(call.CallReport, calls.First().CallReport, "Получены некорректные данные (CallReport)"); Assert.AreEqual(call.OrderCost, calls.First().OrderCost, "Получены некорректные данные (OrderCost)"); } } }
public IWampCancellableInvocationProxy Invoke(IWampRawRpcOperationClientCallback caller, CallOptions options, string procedure, object[] arguments) { if (!IsConnected) { throw new WampSessionNotEstablishedException(); } CallDetails callDetails = new CallDetails(caller, options, procedure, arguments); long requestId = RegisterCall(callDetails); mProxy.Call(requestId, options, procedure, arguments); return(new WampCancellableInvocationProxy(mProxy, requestId)); }
static void WriteToString <TRes>(CallDetails <TRes> call, StringBuilder sb, Type contractType) { var contractName = GetContractName(contractType); sb.AppendLine(""); sb.AppendLine($"===== REQUEST BEGIN ({contractName}) ====="); sb.AppendLine(""); sb.AppendLine(call.RequestDump); sb.AppendLine("===== REQUEST END ====="); sb.AppendLine(""); sb.AppendLine($"===== RESPONSE BEGIN ({contractName}) ====="); sb.AppendLine(""); sb.AppendLine(call.ResponseDump); sb.AppendLine("===== RESPONSE END ====="); }
public async Task UpdateCallAsync(CallDetails call) { var dbCall = _storage.Calls.Find(call.Id); if (dbCall != null) { dbCall.OrderCost = call.OrderCost; dbCall.CallDate = call.CallDate; dbCall.CallReport = call.CallReport; await _storage.SaveChangesAsync(); } else { throw new Exception($"Отчет с Id = {call.Id} не найден в базе данных"); } }
public List <CallDetails> GetAllCallData(long Id) { VoxBayDataAccess obj = new VoxBayDataAccess(); var result = obj.GetAllCallDetails(Id); var callDetails = new List <CallDetails>(); foreach (DataRow dr in result.Rows) { var callData = new CallDetails(); callData.CallType = dr["CallType"].ToString(); callData.AgentName = dr["AgentNumber"].ToString(); callData.Duration = Convert.ToInt32(dr["Duration"] == System.DBNull.Value ? 0 : dr["Duration"]); callData.CallTime = dr["Date"].ToString(); callData.Recording = dr["Recording"].ToString(); callDetails.Add(callData); } return(callDetails); }
private static (Delegate, object[], CallDetails) CreateActionDelegateArgsCallDetails(MethodInfo wrapCallbackMethod) { CallDetails callDetails = new CallDetails(); var actionType = wrapCallbackMethod.GetParameters()[0].ParameterType; var genericArguments = actionType.GetGenericArguments(); object[] args = new object[genericArguments.Length]; var listIntType = typeof(List <int>); var addMethod = listIntType.GetMethod("Add"); Expression createArgs = Expression.New(listIntType.GetConstructor(new Type[] { })); ParameterExpression listVar = Expression.Variable(typeof(List <int>), "delegateArgs"); Expression assignArgsToVariable = Expression.Assign(listVar, createArgs); List <Expression> block = new List <Expression> { assignArgsToVariable }; ParameterExpression[] parameters = new ParameterExpression[genericArguments.Length]; for (var i = 0; i < genericArguments.Length; i++) { var parameterExpression = Expression.Parameter(typeof(int), "param" + (i + 1).ToString()); block.Add(Expression.Call(listVar, addMethod, parameterExpression)); parameters[i] = parameterExpression; args[i] = i; } Expression setArgs = Expression.Assign(Expression.Field(Expression.Constant(callDetails), "args"), listVar); block.Add(setArgs); Expression setCalled = Expression.Assign(Expression.Field(Expression.Constant(callDetails), "called"), Expression.Constant(true)); block.Add(setCalled); var expressionBlock = Expression.Block(new ParameterExpression[] { listVar }, block); return(Expression.Lambda(actionType, expressionBlock, parameters).Compile(), args, callDetails); }
public IList <CallDetails> PrepareData(string Period) { bool subscriptionStatus = GetSubscriptionStatus((Parameter.UserType)Enum.Parse(typeof(Parameter.UserType), "posp")); HttpContext.Current.Session["IsSubscriptionActive"] = subscriptionStatus; CallDetailsQueryResponse resp = WebServiceLoader.CallDetailsQuery(Period, this.customerType); IList <CallDetail> srvCallDetail = resp.CallDetailsSuccessPage.CallDetails; foreach (var item in srvCallDetail) { var model = new CallDetails(); model.Amount = item.GetRatedflatAmount; model.DataVolume = item.GetDataVolume; model.DateDisplay = item.GetDay + " " + item.GetHour; model.Description = item.GetDescription; model.OpAddress = item.GetOpNumberAddress; Data.Add(model); } return(Data); }
public Bill Generate() { customerBill = new Bill(customer); package = CheckPackageType(); double totalCharge = 0; foreach (var call in listOfCalls) { if (call.GetSubscribeNumber() == customer.getPhoneNumber()) { double calculatedCharge = PackagechargersCalculation(call); totalCharge = totalCharge + calculatedCharge; CallDetails detail = new CallDetails(call.GetStartTime(), call.GetDuration(), call.GetRecieveNumber(), calculatedCharge); customerBill.SetCallDetails(detail); } } customerBill.SetRental(package.GetRental()); customerBill.SetTotalCallChagers(totalCharge); customerBill.SetTotalDiscount(package.GetTotalDiscount(totalCharge)); customerBill.SetTax(CalculateTax(customerBill.GetTotalCallCharge(), customerBill.GetRental())); customerBill.SetAmount(); return(customerBill); }
public List <ProspectCustomerViewData> CreateViewDataforHSC ( List <OrderedPair <long, string> > prospectIdSourceCodePair, List <OrderedPair <long, string> > seminarIdSourceCodePair, List <OrderedPair <long, long> > callIdProspectIdPair, List <ProspectCustomerEntity> prospectsCustomerEntity, List <EventsEntity> eventsEntity, List <CallsEntity> callsEntity ) { //TODO: Need to do it with proper repository and factory and service,extension. var hscProspectCustomerViewDataList = new List <ProspectCustomerViewData>(); foreach (var prospectCustomerEntity in prospectsCustomerEntity) { if (prospectCustomerEntity != null) { var prospectCustomerId = prospectCustomerEntity.ProspectCustomerId; var sourceCode = prospectIdSourceCodePair.Find(p => p.FirstValue == prospectCustomerId).SecondValue; var seminarId = seminarIdSourceCodePair.Find(p => p.SecondValue == sourceCode).FirstValue; var currentevent = eventsEntity.Where(events => events.Seminars.Any(se => se.SeminarId == seminarId)).FirstOrDefault(); var seminar = currentevent.Seminars.Where(se => se.SeminarId == seminarId).FirstOrDefault(); var callIds = callIdProspectIdPair.Where(p => p.SecondValue == prospectCustomerId).Select(p => p.FirstValue). ToList(); var callDetails = callIds.Count > 0 ? callsEntity.Where(call => callIds.Contains(call.CallId)).ToList() : null; var callDetailses = new List <CallDetails>(); if (callDetails != null && callDetails.Count > 0) { foreach (var callDetail in callDetails) { if (callDetail != null) { var call = new CallDetails { CallId = callDetail.CallId, CallNotes = callDetail.CallCenterNotes.Count > 0 ? callDetail.CallCenterNotes.SingleOrDefault().Notes : string.Empty, CallStatus = (CallStatus)callDetail.Status, CallDate = callDetail.DateCreated, CallStartTime = callDetail.TimeCreated.HasValue ? callDetail.TimeCreated : null, CallEndTime = callDetail.TimeEnd.HasValue ? callDetail.TimeEnd : null }; callDetailses.Add(call); } } } var hscProspectCustomerViewData = new ProspectCustomerViewData { FirstName = prospectCustomerEntity.FirstName, LastName = prospectCustomerEntity.LastName, SourceCode = sourceCode, AddressLine1 = prospectCustomerEntity.Address1, AddressLine2 = prospectCustomerEntity.Address2, City = prospectCustomerEntity.City, State = prospectCustomerEntity.State, Zip = prospectCustomerEntity.ZipCode, DateCreated = prospectCustomerEntity.DateCreated, ProspectStatus = (ProspectCustomerConversionStatus)prospectCustomerEntity.Status, WellnessSeminar = seminar.Name, EventId = currentevent.EventId, EventDate = currentevent.EventDate, ProspectCallDetails = callDetailses }; hscProspectCustomerViewDataList.Add(hscProspectCustomerViewData); } } return(hscProspectCustomerViewDataList); }