예제 #1
0
 public static void AddNewRestaurent(ListItemLocal source)
 {
     using (var dbContext = new DeliversEntities())
     {
         DbGeography loc = null;
         if (!String.IsNullOrEmpty(source.Location) && source.Location != "")
         {
             var latlng = source.Location.Split('_');
             if (latlng.Length == 2)
             {
                 loc = CommonService.ConvertLatLonToDbGeography(latlng[1], latlng[0]); // lat _ lng
             }
         }
         var dbObj = new ListItem
         {
             Location     = loc,
             Name         = source.Name,
             Description  = source.Description,
             Phone        = source.Phone,
             LogoImage    = source.LogoImage,
             LastEdit     = CommonService.GetSystemTime(),
             BgImage      = source.BgImage,
             Address      = source.Address,
             Rating       = source.Rating,
             Type         = source.Type,
             Id           = source.Id,
             Status       = source.Status,
             Cords        = loc,
             CreationDate = CommonService.GetSystemTime()
         };
         dbContext.ListItems.Add(dbObj);
         dbContext.SaveChanges();
     }
 }
예제 #2
0
 public static bool AddNewToken(NotificationRegisModel source)
 {
     using (var dbContext = new DeliversEntities())
     {
         var tokens = dbContext.Tokens.Where(t => t.AppId == source.AppId && t.UserId == source.UserId).ToList();
         if (tokens != null && tokens.Any())
         {
             foreach (var tok in tokens)
             {
                 tok.Token1   = source.Token;
                 tok.DateTime = CommonService.GetSystemTime();
             }
             dbContext.SaveChanges();
         }
         else
         {
             var obj = new Token
             {
                 AppId    = source.AppId,
                 Token1   = source.Token,
                 UserId   = source.UserId,
                 DateTime = CommonService.GetSystemTime()
             };
             dbContext.Tokens.Add(obj);
             dbContext.SaveChanges();
         }
         return(true);
     }
 }
예제 #3
0
 public static bool AddReview(RatingLocal source)
 {
     using (var dbContext = new DeliversEntities())
     {
         try
         {
             var dbObj = new Rating
             {
                 Id            = 0,
                 DateTime      = CommonService.GetSystemTime(),
                 RatedToItem   = source.RatedToItem,
                 IsApproved    = true,
                 Comments      = source.Comments,
                 RatingStar    = source.RatingStar,
                 RatedByUserId = source.RatedByUserId
             };
             dbContext.Ratings.Add(dbObj);
             dbContext.SaveChanges();
         }
         catch (Exception df)
         {
             return(false);
         }
     }
     return(true);
 }
예제 #4
0
        public static bool CancelAppliedOrder_ByRider(ChangeOrderStatusRequesrModel model)
        {
            using (var dbContext = new DeliversEntities())
            {
                string newStatus = "";
                var    order     = dbContext.Orders.FirstOrDefault(o => o.Id.ToString() == model.OrderId);
                if (order != null)
                {
                    //  var combinedOrders = dbContext.Orders.Where(o => o.SerialNo == order.SerialNo).ToList();
                    // foreach (var dbo in combinedOrders)
                    {
                        // CHECK IF HE APPLIED FOR THIS ORDER OT NOT
                        var isAppliedForOrder = order.PickedBy == model.UserId;
                        if (!isAppliedForOrder)
                        {
                            return(false);
                        }

                        newStatus      = OrderHistoryEnu.ConfirmedByRestaurant.Value;
                        order.Status   = newStatus;
                        order.PickedBy = Guid.Empty.ToString();

                        var currentHis = dbContext.OrderHistories.FirstOrDefault(d => d.OrderId.ToString() == order.Id.ToString() && d.IsCurrent);
                        if (currentHis != null)
                        {
                            currentHis.IsCurrent = false;
                        }

                        dbContext.OrderHistories.Add(new OrderHistory
                        {
                            OrderId   = order.Id,
                            DateTime  = CommonService.GetSystemTime(),
                            Status    = OrderHistoryEnu.CanceledByRider.Value,
                            IsCurrent = false
                        });
                        dbContext.OrderHistories.Add(new OrderHistory
                        {
                            OrderId   = order.Id,
                            DateTime  = CommonService.GetSystemTime(),
                            Status    = newStatus,
                            IsCurrent = true
                        });
                        dbContext.SaveChanges();
                    }

                    // generate notifications
                    NotificationService.ProcessNotificationRequest(OrderHistoryEnu.CanceledByRider.Value, order.Id);
                    NotificationService.ProcessNotificationRequest(newStatus, order.Id);

                    return(true);
                }
                return(false);
            }
        }
예제 #5
0
        public static AlterOrderResponse AlterOrder_Admin(AlterOrderRequestModel source)
        {
            using (var dbContext = new DeliversEntities())
            {
                var response = new AlterOrderResponse {
                    isSuccesss = true
                };
                var totalAmount = source.Items.Sum(i => ItemDetailsService.GetItemDetailLocalById(i.itemId).Price *i.quantity);
                if (totalAmount <= 0)
                {
                    response.isSuccesss = false;
                    response.Message    = "Total amount can not be 0";
                    return(response);
                }
                var order = dbContext.Orders.FirstOrDefault(o => o.Id == source.OrderId);
                if (order != null)
                {
                    if (order.Status == OrderHistoryEnu.Deliverd.Value || order.Status == OrderHistoryEnu.PickedUp.Value)
                    {
                        response.isSuccesss = false;
                        response.Message    = "Can not change order with status: " + order.Status;
                        return(response);
                    }

                    if (order.Amount != totalAmount)
                    {
                        order.Amount    = totalAmount;
                        order.UpdatedAt = CommonService.GetSystemTime();
                        if (order.OrderDetails != null && order.OrderDetails.Any())
                        {
                            foreach (var det in order.OrderDetails)
                            {
                                var newQ = source.Items.FirstOrDefault(i => i.itemId == det.ItemId).quantity;
                                if (newQ != det.Quantity)
                                {
                                    det.Quantity = newQ;
                                }
                            }
                            dbContext.OrderHistories.Add(new OrderHistory {
                                DateTime  = CommonService.GetSystemTime(),
                                IsCurrent = false,
                                OrderId   = source.OrderId,
                                Status    = OrderHistoryEnu.OrderAltered.Value,
                                Comments  = source.Comments
                            });
                            dbContext.SaveChanges();
                        }
                    }
                }
                return(response);
            }
        }
예제 #6
0
        public static string SendSms(string mobile, string contents)
        {
            var response = SendSMS(mobile, contents, "923466043805", "3186");

            if (response != null && response.Contains("OK"))
            {
                using (var dbContext = new DeliversEntities()) {
                    var sms = new Sm {
                        Contetns = contents,
                        Time     = CommonService.GetSystemTime(),
                        ToNumber = mobile
                    };
                    dbContext.Sms.Add(sms);
                    dbContext.SaveChanges();
                }
            }
            return(response);
            //const string url = "http://www.sms4connect.com/api/sendsms.php/sendsms/url";
            //String result = "";
            //String message = System.Web.HttpUtility.UrlEncode(contents);
            //String strPost = "id=kissaneng&pass=pakistan6&msg=" + message +
            //                 "&to=" + mobile + "&mask=KamShamHelp&type=json&lang=English";
            //// "&to=923084449991" + "&mask=SMS4CONNECT&type=xml&lang=English";
            //StreamWriter myWriter = null;
            //HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(url);
            //objRequest.Method = "POST";
            //objRequest.ContentLength = Encoding.UTF8.GetByteCount(strPost);
            //objRequest.ContentType = "application/x-www-form-urlencoded";
            //try
            //{
            //    myWriter = new StreamWriter(objRequest.GetRequestStream());
            //    myWriter.Write(strPost);
            //}
            //catch (Exception e)
            //{
            //    return e.Message;
            //}
            //finally
            //{
            //    myWriter.Close();
            //}
            //HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse();
            //using (StreamReader sr = new StreamReader(objResponse.GetResponseStream()))
            //{
            //    result = sr.ReadToEnd();
            //    // Close and clean up the StreamReader
            //    sr.Close();
            //}
            //return result;
        }
예제 #7
0
        public static bool UpdateImages(ListItemLocal source)
        {
            using (var dbContext = new DeliversEntities())
            {
                var item = dbContext.ListItems.First(x => x.Id == source.Id);
                //if (string.IsNullOrEmpty(source.BgImage))
                //{
                item.BgImage = "image added";
                //}
                //if (string.IsNullOrEmpty(source.LogoImage))
                //{

                item.LogoImage = "logo added";
                //}
                item.LastEdit = CommonService.GetSystemTime();
                dbContext.SaveChanges();
            }
            return(true);
        }
예제 #8
0
        public static string AddRemove_Favourite_Restaurent(AddFavtItemRequestModel source)
        {
            using (var dbContext = new DeliversEntities())
            {
                var rest = dbContext.ListItems.FirstOrDefault(i => i.Id.ToString() == source.ItemId);
                if (rest != null)
                {
                    var isfavtExist = dbContext.ListItems_Favt.FirstOrDefault(i => i.ItemId.ToString() == source.ItemId &&
                                                                              i.UserId == source.UserId);

                    if (source.IsFavourite)
                    {
                        if (isfavtExist == null)
                        {
                            var obj = new ListItems_Favt
                            {
                                ItemId   = Convert.ToInt64(source.ItemId),
                                DateTime = CommonService.GetSystemTime(),
                                UserId   = source.UserId
                            };
                            dbContext.ListItems_Favt.Add(obj);
                            dbContext.SaveChanges();
                            return("Item added as favourite");
                        }
                        else
                        {
                            return("Item already is in favourite");
                        }
                    }
                    else
                    {
                        if (isfavtExist != null)
                        {
                            dbContext.ListItems_Favt.Remove(isfavtExist);
                            dbContext.SaveChanges();
                            return("Item removed from favourite");
                        }
                        return("Item is not in favourite");
                    }
                }
                return("Invalid item");
            }
        }
예제 #9
0
        public static long Create(ListItemLocal source)
        {
            DbGeography   loc    = null;
            List <string> latlng = new List <string>();

            if (!string.IsNullOrEmpty(source.Cords) && source.Cords != "")
            {
                latlng = source.Cords.Split('_').ToList();
                if (latlng.Count == 2)
                {
                    loc = CommonService.ConvertLatLonToDbGeography(latlng[1], latlng[0]); // lat _ lng
                }
            }
            var obj = new ListItem
            {
                Address      = source.Address,
                BgImage      = "https://via.placeholder.com/1350x450",
                Closes       = source.Closes,
                Cords        = loc,
                CreationDate = CommonService.GetSystemTime(),
                Description  = source.Description,
                LastEdit     = CommonService.GetSystemTime(),
                Location     = loc,
                Name         = source.Name,
                Phone        = source.Phone,
                Opens        = source.Opens,
                Status       = source.Status,
                Type         = source.Type,
                Rating       = "0.00",
                MinOrder     = source.MinOrder,
                LogoImage    = "https://via.placeholder.com/120x120"
            };

            using (var dbContext = new DeliversEntities())
            {
                dbContext.ListItems.Add(obj);
                dbContext.SaveChanges();
            }
            return(obj.Id);
        }
예제 #10
0
        public static long Edit(ListItemLocal source)
        {
            DbGeography   loc    = null;
            List <string> latlng = new List <string>();

            if (!string.IsNullOrEmpty(source.Cords) && source.Cords != "")
            {
                latlng = source.Cords.Split('_').ToList();
                if (latlng.Count == 2)
                {
                    loc = CommonService.ConvertLatLonToDbGeography(latlng[1], latlng[0]); // lat _ lng
                }
            }
            using (var dbContext = new DeliversEntities())
            {
                var obj = dbContext.ListItems.FirstOrDefault(x => x.Id == source.Id);
                obj.Address     = source.Address;
                obj.Closes      = source.Closes;
                obj.Cords       = loc;
                obj.Description = source.Description;
                obj.LastEdit    = CommonService.GetSystemTime();
                obj.Location    = loc;
                obj.Name        = source.Name;
                obj.Phone       = source.Phone;
                obj.Opens       = source.Opens;
                obj.Status      = source.Status;
                obj.Type        = source.Type;
                obj.MinOrder    = source.MinOrder;
                if (!string.IsNullOrWhiteSpace(source.BgImage))
                {
                    obj.BgImage = "bg_edit";
                }
                if (!string.IsNullOrWhiteSpace(source.LogoImage))
                {
                    obj.LogoImage = "logo_edit";
                }
                dbContext.SaveChanges();
            }
            return(source.Id);
        }
예제 #11
0
        public static bool ChangeOrderStatus(ChangeOrderStatusRequesrModel model)
        {
            string newStatus;

            using (var dbContext = new DeliversEntities())
            {
                var order = dbContext.Orders.FirstOrDefault(o => o.Id.ToString() == model.OrderId);
                if (order != null)
                {
                    newStatus = model.NewStatus;

                    order.Status    = model.NewStatus;
                    order.UpdatedAt = CommonService.GetSystemTime();

                    var currentHis = dbContext.OrderHistories.FirstOrDefault(d => d.OrderId.ToString() == model.OrderId && d.IsCurrent);
                    if (currentHis != null)
                    {
                        currentHis.IsCurrent = false;
                    }

                    dbContext.OrderHistories.Add(new OrderHistory
                    {
                        OrderId   = order.Id,
                        DateTime  = CommonService.GetSystemTime(),
                        Status    = model.NewStatus,
                        IsCurrent = true,
                        Comments  = model.Comments
                    });
                    dbContext.SaveChanges();

                    // generate notifications
                    NotificationService.ProcessNotificationRequest(newStatus, order.Id);
                    return(true);
                }
                return(false);
            }
        }
예제 #12
0
        public static bool UpdateUserLocation(userLocationModel requestModel)
        {
            DbGeography   userLoc = null;
            List <string> latlng  = new List <string>();

            if (!string.IsNullOrEmpty(requestModel.Cords) && requestModel.Cords != "")
            {
                latlng = requestModel.Cords.Split('_').ToList();
                if (latlng.Count == 2)
                {
                    userLoc = CommonService.ConvertLatLonToDbGeography(latlng[1], latlng[0]); // lat _ lng
                    using (var dbContext = new DeliversEntities())
                    {
                        var userlocmap = dbContext.Rider_Location_Map.FirstOrDefault(l => l.UserId == requestModel.UserId);
                        if (userlocmap == null)
                        {
                            var obj = new Rider_Location_Map
                            {
                                UserId      = requestModel.UserId,
                                Location    = userLoc,
                                LastUpdated = CommonService.GetSystemTime()
                            };
                            dbContext.Rider_Location_Map.Add(obj);
                        }
                        else
                        {
                            userlocmap.Location    = userLoc;
                            userlocmap.LastUpdated = DateTime.Now;
                        }
                        dbContext.SaveChanges();
                        return(true);
                    }
                }
            }
            return(false);
        }
예제 #13
0
        public static UpdateOrderResponse EditOrder_Admin(OrderLocal source)
        {
            var response = new UpdateOrderResponse {
            };

            using (var dbContext = new DeliversEntities())
            {
                var dbOrder = dbContext.Orders.FirstOrDefault(o => o.Id == source.Id);
                if (dbOrder != null)
                {
                    var canEditOrder = true;
                    #region EDIT
                    if (dbOrder.Status == OrderHistoryEnu.Deliverd.Value || dbOrder.Status == OrderHistoryEnu.PickedUp.Value)
                    {
                        canEditOrder = false;
                    }

                    #region STATUS
                    if (dbOrder.Status != source.Status)
                    {
                        var dbOrderStatus      = OrderService.GetOrderCurrentStatus(source.Id.ToString());
                        var updatedOrderStatus = OrderHistoryEnu.GetOrderStatus(source.Status);

                        if (updatedOrderStatus.Order - dbOrderStatus.Order > 1)
                        {
                            response.Status = false;
                            response.Error  = "Invalid order status";
                            return(response);
                        }

                        // UPDATE STATUS
                        ChangeOrderStatus(new ChangeOrderStatusRequesrModel {
                            OrderId   = source.Id.ToString(),
                            NewStatus = source.Status,
                            UserId    = null,
                            Comments  = source.Comments
                        });
                    }

                    #endregion

                    var newHist = new OrderHistory
                    {
                        OrderId   = dbOrder.Id,
                        DateTime  = CommonService.GetSystemTime(),
                        IsCurrent = false,
                        Status    = OrderHistoryEnu.OrderEdited.Value,
                        Comments  = source.Comments
                    };
                    var isAddHis = false;
                    var comm     = "";


                    if (!string.IsNullOrEmpty(source.Address) && source.Address.ToLower() != dbOrder.Address.ToLower())
                    {
                        if (canEditOrder)
                        {
                            comm            = "address changed from '" + dbOrder.Address + "' TO '" + source.Address + "' & ";
                            dbOrder.Address = source.Address;
                            isAddHis        = true;
                        }
                        else
                        {
                            response.Status = false;
                            response.Error  = "Can not change address in current status: " + dbOrder.Status;
                            return(response);
                        }
                    }
                    if (!string.IsNullOrEmpty(source.Instructions) && source.Instructions.ToLower() != dbOrder.Instructions.ToLower())
                    {
                        dbOrder.Instructions = source.Instructions;
                    }
                    if (!string.IsNullOrEmpty(source.PickedBy) && source.PickedBy.ToLower() != dbOrder.PickedBy.ToLower())
                    {
                        dbOrder.PickedBy = source.PickedBy;
                    }
                    if (source.DeliveryCost != dbOrder.DeliveryCost)
                    {
                        if (canEditOrder)
                        {
                            comm                 = comm + "delivery cost changed from " + dbOrder.DeliveryCost + " TO " + source.DeliveryCost + ".";
                            isAddHis             = true;
                            dbOrder.DeliveryCost = source.DeliveryCost;
                        }
                        else
                        {
                            response.Status = false;
                            response.Error  = "Can not change delivery cost in current status: " + dbOrder.Status;
                            return(response);
                        }
                    }

                    if (isAddHis)
                    {
                        newHist.Comments = comm;
                        dbContext.OrderHistories.Add(newHist);
                    }

                    dbContext.SaveChanges();
                    response.Status = true;
                    response.Error  = "";
                    return(response);

                    #endregion
                }
                else
                {
                    response.Status = false;
                    response.Error  = "Invalid order Id";
                    return(response);
                }
            }
        }
예제 #14
0
        public static List <SendNotiResponseModel> SendNotification(NotificationSendModel model)
        {
            var response = new List <SendNotiResponseModel>();


            using (var dbContext = new DeliversEntities())
            {
                //#region Confirmed
                //if (model.Action == NotificationEnum.confirmed)
                //{
                //    var allDevliveryBoyes = dbContext.AspNetUsers.Where(o => o.Type == 0 && (o.Status ?? false) && (o.IsApproved ?? false)).ToList();
                //    if (allDevliveryBoyes != null && allDevliveryBoyes.Any())
                //    {
                //        model.UserIds = new List<string>();
                //        model.UserIds = allDevliveryBoyes.Select(o => o.Id.ToString()).ToList();
                //    }
                //}

                //if(model.UserIds==null || !model.UserIds.Any())
                //{
                //    var tempoRes = new SendNotiResponseModel
                //    {
                //        UserId = "0",
                //        AppId = 0000,
                //        Token = new List<string> { "NOTHING"},
                //        Response = "No active delivery boy found"
                //    };
                //    response.Add(tempoRes);
                //    return response;
                //}

                //#endregion

                foreach (var u in model.UserIds)
                {
                    var tempoRes = new SendNotiResponseModel
                    {
                        UserId   = u,
                        AppId    = model.AppId,
                        Token    = new List <string>(),
                        Response = ""
                    };

                    var tokens = new List <Token>();

                    var user = dbContext.AspNetUsers.FirstOrDefault(obj => obj.Id == u);
                    if (user != null)
                    {
                        var toks = dbContext.Tokens.Where(t => t.UserId == user.Id && t.AppId == model.AppId);
                        if (toks != null && toks.Any())
                        {
                            tokens.AddRange(toks);

                            foreach (var tok in tokens)
                            {
                                tempoRes.Token.Add(tok.Token1);
                                tempoRes.Response = SendNotiInner(model.AppId, tok.Token1, model.Text, "Testing");

                                var tempoNoti = new Notification
                                {
                                    AppId    = model.AppId,
                                    DateTime = CommonService.GetSystemTime(),
                                    Text     = model.Text + " at " + CommonService.GetSystemTime().ToLongTimeString(),
                                    UserId   = user.Id
                                };
                                dbContext.Notifications.Add(tempoNoti);
                                dbContext.SaveChanges();
                            }
                        }
                        else
                        {
                            tempoRes.Token.Add("User is valid but No Token Found for this user");
                        }
                    }
                    else
                    {
                        tempoRes.Token.Add("User is not valid");
                    }
                    response.Add(tempoRes);
                }
            }

            return(response);
        }
예제 #15
0
        public static PlaceOrderResponseModel Place(PlaceOrderRequestModel request, string orderBy)
        {
            DbGeography userLoc       = null;
            var         orderstatus   = OrderHistoryEnu.Placed.Value;
            var         estimatedTime = "45 minutes away";
            var         orderIds      = new List <string>();

            if (!string.IsNullOrEmpty(request.Cords) && request.Cords != "")
            {
                var latlng = request.Cords.Split('_').ToList();
                if (latlng.Count == 2)
                {
                    userLoc = CommonService.ConvertLatLonToDbGeography(latlng[1], latlng[0]); // lat _ lng
                }
            }


            using (var dbContext = new DeliversEntities())
            {
                foreach (var item in request.Items)
                {
                    var dbItem = dbContext.ItemDetails.FirstOrDefault(i => i.Id == item.ItemId);
                    if (dbItem != null)
                    {
                        item.RestId = dbItem.ListItemId;
                    }
                }
            }


            var rest_groups = request.Items.GroupBy(item => item.RestId).ToList();
            var serial      = Guid.NewGuid().ToString().Substring(0, 6).ToUpper();

            using (var dbContext = new DeliversEntities())
            {
                foreach (var localG in rest_groups)
                {
                    var localList   = localG.ToList();
                    var totalAmount = localList.Sum(i => ItemDetailsService.GetItemDetailLocalById(i.ItemId).Price *i.Quantity);
                    var order       = new Order
                    {
                        Address       = request.Address,
                        Instructions  = request.Instructions,
                        Status        = orderstatus,
                        OrderBy       = orderBy,
                        Amount        = totalAmount,
                        DateTime      = CommonService.GetSystemTime(),
                        Cords         = userLoc,
                        EstimatedTime = estimatedTime,
                        SerialNo      = serial,
                        PickedBy      = Guid.Empty.ToString(),
                        UpdatedAt     = CommonService.GetSystemTime(),
                        DeliveryCost  = CommonService.GetDeliveryAmount()
                    };
                    dbContext.Orders.Add(order);

                    dbContext.OrderHistories.Add(new OrderHistory
                    {
                        OrderId   = order.Id,
                        DateTime  = CommonService.GetSystemTime(),
                        Status    = orderstatus,
                        IsCurrent = true
                    });
                    foreach (var item in localList)
                    {
                        var itmObj = new OrderDetail
                        {
                            OrderId  = order.Id,
                            ItemId   = item.ItemId,
                            Quantity = item.Quantity,
                            RestId   = item.RestId
                        };
                        dbContext.OrderDetails.Add(itmObj);
                    }
                    dbContext.SaveChanges();

                    // generate notification
                    NotificationService.ProcessNotificationRequest(orderstatus, order.Id);
                    orderIds.Add(order.Id.ToString());
                }

                return(new PlaceOrderResponseModel {
                    EstimatedTime = estimatedTime, OrderIds = orderIds, SerailNo = serial
                });
            }
        }
예제 #16
0
        private static string SendNotiInner(long appId, string token, string message, string title)
        {
            var    mId      = CommonService.GetSystemTime().Millisecond;
            var    jGcmData = new JObject();
            var    jData    = new JObject();
            var    url      = new Uri("https://fcm.googleapis.com/fcm/send");
            string auth     = null;

            if (appId == 1)  // order app
            {
                auth = "AAAA3LphIJw:APA91bGkmGxenbS_Tlli1fHbNJuYhJvhnsRf2zH1u9pa3zvAQ3mNuewN69G8MtLz6PJkJ6Ksmklo4WpBV5tGyGvue6LNMPNc9mjYv10g90Jdq8HvesE1XJP-lQNeoDIQYb__-b4oczE1";
            }
            else if (appId == 0)// delivery/rider app
            {
                auth = "AAAAZhLRgQw:APA91bGav1qNIlqd3Q7VJUZ6vjzECSqVsoB0-xBxJljlkyrTP_mq5DdwjPIUjvGMslJEKZ6NmsgqXdkJLuoejtV8oMngLA7AJ2WmCZwLPL_8uNh7r50lkdyg1Pds2yO9JriSldXqOyWo";
            }
            else if (appId == 2)// restaurant app
            {
                auth = "AAAAM2X6b1M:APA91bHxOTofAgdrqoSjXDiKnT7eHZaE5fSBLegkAKcrr8TZ4gyURyCBp3Wt2Qx4Tmd8lbaTa8JZksmDwyz6yWP7VO-Wl-5l9BDDbVw395piZ3-sWoGPC4EVV7J5BWtzwRfWQrdjptWm";
            }


            jData.Add("message", message);
            jData.Add("mid", mId);
            jData.Add("title", title);
            jGcmData.Add("to", token);

            jGcmData.Add("data", jData);
            try
            {
                using (var client = new HttpClient())
                {
                    client.DefaultRequestHeaders.Accept.Add(
                        new MediaTypeWithQualityHeaderValue("application/json"));

                    client.DefaultRequestHeaders.TryAddWithoutValidation(
                        "Authorization", "key=" + auth);

                    Task.WaitAll(client.PostAsync(url,
                                                  new StringContent(jGcmData.ToString(), Encoding.Default, "application/json"))
                                 .ContinueWith(response =>
                    {
                        var xxx = response.Result.Content.ReadAsStringAsync();
                        using (var dbContext = new DeliversEntities())
                        {
                            try
                            {
                                dbContext.Notifications.Add(new Notification
                                {
                                    AppId    = appId,
                                    DateTime = CommonService.GetSystemTime(),
                                    Text     = message,
                                    UserId   = "0beab117-d8ef-4a8e-9978-b66b35a56be5"
                                });
                                dbContext.SaveChanges();
                            }
                            catch (Exception dfd)
                            {
                            }
                        }
                        return(xxx);
                    }));
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Unable to send GCM message:");
                Console.Error.WriteLine(e.StackTrace);
                return("Exception while sending notification");
            }
            return("Processing...");
        }
예제 #17
0
        public static ApplyRiderResponse ApplyToOrder_ByRider(ApplyByRiderRequestmodel model)
        {
            string newStatus = "";

            using (var dbContext = new DeliversEntities())
            {
                var order = dbContext.Orders.FirstOrDefault(o => o.Id.ToString() == model.OrderId);
                if (order != null)
                {
                    //  var combinedOrders = dbContext.Orders.Where(o => o.SerialNo == order.SerialNo).ToList();
                    //  var ifSomeoneAppliedAlready = combinedOrders.Any(o => o.Status != OrderHistoryEnu.ConfirmedByRestaurant.Value);
                    var ifSomeoneAppliedAlready = order.Status != OrderHistoryEnu.ConfirmedByRestaurant.Value;
                    if (ifSomeoneAppliedAlready)
                    {
                        return(new ApplyRiderResponse
                        {
                            isSuccesss = false,
                            Message = "Order has been assigned to some other rider."
                        });
                    }

                    var notAvaialbeORders = 0;

                    var combinedOrders = new List <Order> {
                        order
                    };                                               // this one

                    foreach (var dbO in combinedOrders)
                    {
                        newStatus = OrderHistoryEnu.ConfirmedByRider.Value;
                        if (dbO.Status != OrderHistoryEnu.ConfirmedByRestaurant.Value)
                        {
                            notAvaialbeORders++;
                            continue;
                        }

                        dbO.Status    = newStatus;
                        dbO.PickedBy  = model.UserId;
                        dbO.UpdatedAt = CommonService.GetSystemTime();

                        var currentHis = dbContext.OrderHistories.FirstOrDefault(d => d.OrderId.ToString() == dbO.Id.ToString() && d.IsCurrent);
                        if (currentHis != null)
                        {
                            currentHis.IsCurrent = false;
                        }

                        dbContext.OrderHistories.Add(new OrderHistory
                        {
                            OrderId   = dbO.Id,
                            DateTime  = CommonService.GetSystemTime(),
                            Status    = newStatus,
                            IsCurrent = true
                        });
                    }
                    if (notAvaialbeORders == 0)
                    {
                        dbContext.SaveChanges();
                        notAvaialbeORders = 0;
                        // generate notifications
                        NotificationService.ProcessNotificationRequest(newStatus, order.Id);
                        return(new ApplyRiderResponse
                        {
                            isSuccesss = true,
                            Message = "Order has been assigned to you."
                        });
                    }
                    else
                    {
                        return(new ApplyRiderResponse
                        {
                            isSuccesss = false,
                            Message = "Order/part of order has been assigned to some other rider."
                        });
                    }
                }
                return(new ApplyRiderResponse
                {
                    isSuccesss = false,
                    Message = "Order does not exist."
                });
            }
        }