public CallersViewModel(List <CallInfo> calls, string sortBy = nameof(DateTime))
        {
            var callerList = new List <CallerViewModel>();

            foreach (var call in calls)
            {
                var title  = call.CallerName ?? call.Number;
                var caller = callerList.FirstOrDefault(c => c.Title == title);
                if (caller == null)
                {
                    caller = new CallerViewModel {
                        Title = title, Name = call.CallerName
                    };
                    callerList.Add(caller);
                }

                var number = caller.Numbers.FirstOrDefault(c => c.Number == call.Number);
                if (number == null)
                {
                    number = new CallerViewModel.NumberViewModel {
                        Number = call.Number
                    };
                    caller.Numbers.Add(number);
                }

                var type = number.CallTypes.FirstOrDefault(t => t.CallType == call.Type);
                if (type == null)
                {
                    type = new CallerViewModel.NumberViewModel.CallTypeViewModel {
                        CallType = call.Type
                    };
                    number.CallTypes.Add(type);
                }

                type.CallTimes.Add(new CallerViewModel.NumberViewModel.CallTypeViewModel.CallTimeViewModel
                {
                    DateTime     = call.DateTime,
                    CallDuration = (int)call.Duration
                });
            }


            if (sortBy == nameof(DateTime))
            {
                callerList = callerList.OrderByDescending(c => c.DateTime).ToList();
            }
            else if (sortBy == nameof(CallsCount))
            {
                callerList = callerList.OrderByDescending(c => c.CallsCount).ToList();
            }

            else if (sortBy == nameof(CallsDuration))
            {
                callerList = callerList.OrderByDescending(c => c.CallsDuration).ToList();
            }

            Callers = callerList;
        }
Esempio n. 2
0
        public IHttpActionResult IntiateCall(CallerViewModel data)
        {
            using (var ctx = new TelemedicineDBEntities())
            {
                var caller = ctx.Users
                             .Where(a => a.UserId == data.CallerId)
                             .FirstOrDefault();
                if (caller.UserId != null)
                {
                    try
                    {
                        DateTime serverTime = DateTime.Now;
                        Console.WriteLine(serverTime);
                        var session = penTok.CreateSession();
                        var token   = session.GenerateToken();

                        var callInfo = ctx.callInfoes.Add(new callInfo
                        {
                            CallInfoId = Guid.NewGuid(),
                            CallerId   = data.CallerId,
                            ReceiverId = data.ReceiverId,
                            SessionId  = session.Id,
                            Token      = token
                        });

                        var newInfo = new callInfo();
                        newInfo.CallerId   = callInfo.CallerId;
                        newInfo.ReceiverId = callInfo.CallerId;
                        newInfo.SessionId  = callInfo.SessionId;
                        newInfo.CallInfoId = callInfo.CallInfoId;
                        newInfo.Token      = callInfo.Token;

                        var result = ctx.SaveChanges();
                        if (result == 1)
                        {
                            return(Ok(newInfo));
                        }
                        else
                        {
                            return(Ok("Call failed"));
                        }
                    }
                    catch (Exception ex)
                    {
                        throw ex.InnerException;
                    }
                }
            }

            return(Ok());
        }