Пример #1
0
        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, "Получены некорректные данные");
                }
            }
        }
Пример #2
0
        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);
        }
Пример #3
0
        private void InsertCallDetails(int callId, MessageType type)
        {
            CallDetails callDetails = new CallDetails(callId, type);

            sortedList.Add(callDetails);
            CheckPending();
        }
Пример #4
0
        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();
            }
        }
Пример #5
0
        private long RegisterCall(CallDetails callDetails)
        {
            long requestId = mPendingCalls.Add(callDetails);

            callDetails.RequestId = requestId;
            return(requestId);
        }
Пример #6
0
        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);
        }
Пример #7
0
 void Log <T>(CallDetails <T> details)
 {
     _output.WriteLine("=== REQUEST ===");
     _output.WriteLine(details.RequestDump);
     _output.WriteLine("=== RESPONSE ===");
     _output.WriteLine(details.ResponseDump);
     _output.WriteLine("=== END ===");
 }
Пример #8
0
        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);
            }
        }
Пример #9
0
        public void Result(long requestId, ResultDetails details, TMessage[] arguments)
        {
            CallDetails callDetails = TryGetCallDetails(requestId, details);

            if (callDetails != null)
            {
                callDetails.Caller.Result(this.Formatter, details, arguments);
            }
        }
Пример #10
0
        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);
            }
        }
Пример #11
0
        public void CallError(long requestId, TMessage details, string error)
        {
            CallDetails callDetails = TryGetCallDetails(requestId);

            if (callDetails != null)
            {
                callDetails.Caller.Error(this.Formatter, details, error);
            }
        }
Пример #12
0
 /// <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;
 }
Пример #13
0
        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);
        }
Пример #14
0
        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, "Отчет не удален");
        }
Пример #15
0
        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);
        }
Пример #17
0
        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();
            }
        }
Пример #18
0
        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());
        }
Пример #20
0
        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);
        }
Пример #21
0
        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);
        }
Пример #22
0
        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)");
                }
            }
        }
Пример #23
0
        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 =====");
        }
Пример #25
0
        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} не найден в базе данных");
            }
        }
Пример #26
0
        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);
        }
Пример #27
0
        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);
        }
Пример #28
0
        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);
        }
Пример #29
0
        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);
        }
Пример #30
0
        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);
        }