public IHttpActionResult setDates([FromBody] ICollection <AdvertUnavailableDate> dates, int id) { int user_id = Users.GetUserId(User); if (!db.advert.Any(a => a.user_id == user_id && a.id == id)) { return(NotFound()); } db.advert_unavaiable_dates.RemoveRange(db.advert_unavaiable_dates.Where(uad => uad.advert_id == id && uad.rezervation_id == 0)); if (dates != null) { dates.ToList().ForEach(date => { AdvertUnavailableDate aud = new AdvertUnavailableDate { advert_id = id, created_date = DateTime.Now, day = date.day, month = date.month, year = date.year, fulldate = date.fulldate, rezervation_id = date.rezervation_id }; db.advert_unavaiable_dates.Add(aud); }); } db.SaveChanges(); return(Ok(dates)); }
public object forceApprove([FromBody] _ExistRezervation rezervations, int id) { int user_id = Users.GetUserId(User); // get exist rezervation id List <int> rezervations_id = new List <int>(); rezervations.rezervations.ToList().ForEach(r => { if (!db.rezervations.Any(rr => rr.owner == user_id)) { ExceptionThrow.Throw("Yetkisiz işlem gerçekleştirildi!", HttpStatusCode.Forbidden); } rezervations_id.Add(r.id); }); // rezervation validation Rezervations rezervation = db.rezervations.Find(id); if (rezervation == null) { return(NotFound()); } // rezervation validation if (rezervation.updated_date != null) { ExceptionThrow.Throw("Yetkisiz işlem gerçekleştirildi!", HttpStatusCode.Forbidden); } // rezervation advert validation RezervationAdverts advert = db.rezervation_adverts.Where(ra => ra.advert_id == rezervation.advert_id).FirstOrDefault(); if (advert == null) { return(NotFound()); } // rezervation owner validation if (advert.user_id != user_id) { ExceptionThrow.Throw("Yetkisiz işlem gerçekleştirildi!", HttpStatusCode.Forbidden); } // rezervation user validation Users user = db.users.Find(rezervation.user_id); if (user == null) { return(NotFound()); } rezervation.state = true; rezervation.is_cancel = false; rezervation.updated_date = DateTime.Now; // available date validation var dateList = new List <DateTime>(); for (DateTime date = rezervation.checkin; date.Date < rezervation.checkout.Date; date = date.AddDays(1)) { dateList.Add(date); } // set unavaiable date dateList.ForEach(date => { AdvertUnavailableDate advertUnavaiableDate = new AdvertUnavailableDate { advert_id = rezervation.advert_id, day = date.Day, month = date.Month, year = date.Year, fulldate = date, created_date = DateTime.Now, rezervation_id = rezervation.id }; db.advert_unavaiable_dates.Add(advertUnavaiableDate); }); db.rezervations.Where(r => r.owner == user_id && rezervations_id.Contains(r.id)).ToList().ForEach(rez => { rez.state = false; rez.is_cancel = true; rez.updated_date = DateTime.Now; }); db.SaveChanges(); rezervations.rezervations.ForEach(r => { Rezervations rez_ = db.rezervations.Where(r_ => r_.id == r.id && r_.state == false & r_.is_cancel == true).FirstOrDefault(); if (rez_ != null) { Users user_ = db.users.Where(u => u.id == rez_.user_id).FirstOrDefault(); if (user_ != null) { // Add notify Notifications notify_ = new Notifications(); notify_.add(user_.id, "#" + rez_.id + " nolu " + rez_.days + " günlük rezervasyon talebi iptal edildi!", rez_.id); // Send sms NetGsm.Send(user_.gsm, "#" + rez_.id + " nolu " + "(" + rez_.days + " gün - " + rez_.total_price + " TL) rezervasyonunuz iptal edildi. - Menkule.com.tr"); // Send email Mailgun.Send("cancel", new Dictionary <string, object>() { { "fullname", System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(user_.name) + " " + System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(user_.lastname) }, { "rezervation_id", rez_.id }, { "checkin", Convert.ToDateTime(rez_.checkin).ToShortDateString() }, { "checkout", Convert.ToDateTime(rez_.checkout).ToShortDateString() }, { "days", rez_.days }, { "price", rez_.total_price + " TL." } }, user_.email, "Rezervasyon talebi iptal edildi."); } } }); // send sms NetGsm.Send(user.gsm, "#" + rezervation.id + " nolu " + "(" + rezervation.days + " gün - " + rezervation.total_price + " TL) rezervasyonunuz onaylandı. - Menkule.com.tr"); // send notifications Notifications notify = new Notifications(); notify.add(user.id, "#" + rezervation.id + " nolu rezervasyon talebiniz onaylandı.", rezervation.id); // Send email Mailgun.Send("approve", new Dictionary <string, object>() { { "fullname", System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(user.name) + " " + System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(user.lastname) }, { "rezervation_id", rezervation.id }, { "checkin", Convert.ToDateTime(rezervation.checkin).ToShortDateString() }, { "checkout", Convert.ToDateTime(rezervation.checkout).ToShortDateString() }, { "days", rezervation.days }, { "price", rezervation.total_price + " TL." } }, user.email, "Rezervasyon talebi onaylandı."); return(Ok()); }
public object approve(int id) { int user_id = Users.GetUserId(User); Rezervations rezervation = db.rezervations.Find(id); if (rezervation == null) { return(NotFound()); } if (rezervation.updated_date != null) { ExceptionThrow.Throw("Yetkisiz işlem gerçekleştirildi!", HttpStatusCode.Forbidden); } RezervationAdverts advert = db.rezervation_adverts.Where(ra => ra.advert_id == rezervation.advert_id).FirstOrDefault(); if (advert == null) { return(NotFound()); } if (advert.user_id != user_id) { ExceptionThrow.Throw("Yetkisiz işlem gerçekleştirildi!", HttpStatusCode.Forbidden); } Users user = db.users.Find(rezervation.user_id); if (user == null) { return(NotFound()); } // exist rezervation validations DateTime checkoutDate = rezervation.checkout.AddDays(-1); var exist_rezervations = db.rezervations.Where(r => ((r.checkin >= rezervation.checkin && r.checkin <= checkoutDate) || (r.checkin <= rezervation.checkin && r.checkout <= checkoutDate)) && r.advert_id == advert.advert_id && r.id != id && r.state == false && r.is_cancel == false && r.checkout > rezervation.checkin).ToList(); if (exist_rezervations.Count > 0) { ExceptionThrow.Throw(exist_rezervations, HttpStatusCode.NotImplemented); } rezervation.state = true; rezervation.is_cancel = false; rezervation.updated_date = DateTime.Now; // available date validation var dateList = new List <DateTime>(); for (DateTime date = rezervation.checkin; date.Date < rezervation.checkout.Date; date = date.AddDays(1)) { dateList.Add(date); } // set unavaiable date dateList.ForEach(date => { AdvertUnavailableDate advertUnavaiableDate = new AdvertUnavailableDate { advert_id = rezervation.advert_id, day = date.Day, month = date.Month, year = date.Year, fulldate = date, created_date = DateTime.Now, rezervation_id = rezervation.id }; db.advert_unavaiable_dates.Add(advertUnavaiableDate); }); db.SaveChanges(); // send sms NetGsm.Send(user.gsm, "#" + rezervation.id + " nolu " + "(" + rezervation.days + " gün - " + rezervation.total_price + " TL) rezervasyonunuz onaylandı. - Menkule.com.tr"); // send notifications Notifications notify = new Notifications(); notify.add(user.id, "#" + rezervation.id + " nolu rezervasyon talebiniz onaylandı.", rezervation.id); // Send email Mailgun.Send("approve", new Dictionary <string, object>() { { "fullname", System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(user.name) + " " + System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(user.lastname) }, { "rezervation_id", rezervation.id }, { "checkin", Convert.ToDateTime(rezervation.checkin).ToShortDateString() }, { "checkout", Convert.ToDateTime(rezervation.checkout).ToShortDateString() }, { "days", rezervation.days }, { "price", rezervation.total_price + " TL." } }, user.email, "Rezervasyon talebi onaylandı."); return(Ok()); }