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(); } }
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); } }
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); }
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); } }
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); } }
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; }
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); }
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"); } }
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); }
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); }
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); } }
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); }
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); } } }
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); }
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 }); } }
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..."); }
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." }); } }