public async Task <HttpResponseMessage> CheckPayments(CommonRequestModels model) { var payments = await(from p in db.Payments join pi in db.PaymentItems on p.Id equals pi.Payments_Id join si in db.SaleInvoices on pi.ReferenceId equals si.Id join u in db.User on si.Customer_UserAccounts_Id equals u.Id join b in db.Branches on si.Branches_Id equals b.Id where p.Cancelled == false && u.UserName == model.Username select new { p, pi, si, u, b }).ToListAsync(); List <PaymentApiModels> list = new List <PaymentApiModels>(); if (payments.Count > 0) { foreach (var payment in payments.OrderByDescending(x => x.p.Timestamp)) { list.Add(new PaymentApiModels { No = "Payment No. " + payment.p.No, Date = string.Format("{0:yyyy/MM/dd}", TimeZoneInfo.ConvertTimeFromUtc(payment.p.Timestamp, TimeZoneInfo.FindSystemTimeZoneById("SE Asia Standard Time"))), Amount = string.Format("{0} {1:N0}", "Rp ", payment.pi.Amount), Branch = payment.b.Name, NoInvoice = "Invoice No. " + payment.si.No }); } } if (list == null) { return(Request.CreateResponse(HttpStatusCode.NotFound, list)); } else { return(Request.CreateResponse(HttpStatusCode.OK, list)); } }
public HttpResponseMessage UserLogin(CommonRequestModels model) { var user_login = db.User.Where(x => x.UserName == model.Username).FirstOrDefault(); var user_roles = (from ur in db.UserRole join r in db.Role on ur.RoleId equals r.Id where ur.UserId == user_login.Id select new { ur, r }).ToList(); string role = ""; if (user_roles.Count == 1) { foreach (var r in user_roles) { if (r.r.Name.ToLower() == "student" || r.r.Name.ToLower() == "tutor") { role = r.r.Name; } } } UserApiModels userApiModels = new UserApiModels { Username = user_login.UserName, Fullname = user_login.Firstname + " " + user_login.Middlename + " " + user_login.Lastname, Email = user_login.Email, Role = role }; return(Request.CreateResponse(HttpStatusCode.OK, userApiModels)); }
public async Task <HttpResponseMessage> Invoices(CommonRequestModels model) { var invoices = await(from si in db.SaleInvoices join sii in db.SaleInvoiceItems on si.Id equals sii.SaleInvoices_Id join u in db.User on si.Customer_UserAccounts_Id equals u.Id where si.Cancelled == false && u.UserName == model.Username && sii.LessonPackages_Id != null orderby si.Timestamp descending select new { si, sii, u }).ToListAsync(); List <InvoiceApiModels> list = new List <InvoiceApiModels>(); if (invoices.Count > 0) { foreach (var invoice in invoices) { string package_name; if (invoice.sii.LessonPackages_Id.HasValue) { var a = await db.LessonPackages.Where(x => x.Id == invoice.sii.LessonPackages_Id).FirstOrDefaultAsync(); package_name = a.Name; } else if (invoice.sii.Products_Id.HasValue) { var a = await db.Products.Where(x => x.Id == invoice.sii.Products_Id).FirstOrDefaultAsync(); package_name = a.Description; } else if (invoice.sii.Services_Id.HasValue) { var a = await db.Services.Where(x => x.Id == invoice.sii.Services_Id).FirstOrDefaultAsync(); package_name = a.Description; } else { package_name = string.Empty; } list.Add(new InvoiceApiModels { SaleInvoiceItems_Id = invoice.sii.Id, No = "Invoice No. " + invoice.si.No, Package = package_name, Price = string.Format("{0} {1:N0}", "Rp", invoice.sii.Price), Due = string.Format("{0} {1:N0}", "Rp", invoice.si.Due), RemainingHours = string.Format("Avail. {0} of {1} hours", invoice.sii.SessionHours_Remaining.Value, invoice.sii.SessionHours.Value), Status = invoice.si.Due > 0 ? "Waiting Payment" : "Payment Completed" }); } } if (list == null) { return(Request.CreateResponse(HttpStatusCode.NotFound, list)); } else { return(Request.CreateResponse(HttpStatusCode.OK, list)); } }
public async Task <HttpResponseMessage> TutorSchedules(CommonRequestModels model) { var result = await db.TutorSchedules.Where(x => x.Id.ToString() == model.ReffId).FirstOrDefaultAsync(); if (result == null) { return(Request.CreateResponse(HttpStatusCode.NotFound, result)); } else { return(Request.CreateResponse(HttpStatusCode.OK, result)); } }
public async Task <HttpResponseMessage> ScheduleAdd(TutorScheduleApiModels model) { string user_id = db.User.Where(x => x.UserName == model.Username).FirstOrDefault().Id; DayOfWeekEnum dow = (DayOfWeekEnum)Enum.Parse(typeof(DayOfWeekEnum), model.Day); DateTime _start = DateTime.Parse(model.Start); DateTime start = new DateTime(1970, 1, 1, _start.Hour, _start.Minute, 0); DateTime _end = DateTime.Parse(model.End); DateTime end = new DateTime(1970, 1, 1, _end.Hour, _end.Minute, 0); CommonRequestModels data = new CommonRequestModels(); var isExist = await db.TutorSchedules .Where(x => x.Tutor_UserAccounts_Id == user_id && x.DayOfWeek == dow && x.StartTime == start && x.EndTime == end).FirstOrDefaultAsync(); if (isExist != null) { data.Message = "This schedule already exist."; } else { if (start.Hour > end.Hour || (start.Hour == end.Hour && start.Minute > end.Minute)) { data.Message = "The Start Time cannot greater than End Time"; } } if (string.IsNullOrEmpty(data.Message)) { TutorSchedulesModels tutorSchedulesModels = new TutorSchedulesModels { Id = Guid.NewGuid(), Tutor_UserAccounts_Id = user_id, DayOfWeek = dow, StartTime = start, EndTime = end, IsActive = true, Notes = model.Notes }; db.TutorSchedules.Add(tutorSchedulesModels); await db.SaveChangesAsync(); } return(Request.CreateResponse(HttpStatusCode.OK, data)); }
public async Task <HttpResponseMessage> ScheduleEdit(TutorScheduleApiModels model) { string user_id = db.User.Where(x => x.UserName == model.Username).FirstOrDefault().Id; DayOfWeekEnum dow = (DayOfWeekEnum)Enum.Parse(typeof(DayOfWeekEnum), model.Day); DateTime _start = DateTime.Parse(model.Start); DateTime start = new DateTime(1970, 1, 1, _start.Hour, _start.Minute, 0); DateTime _end = DateTime.Parse(model.End); DateTime end = new DateTime(1970, 1, 1, _end.Hour, _end.Minute, 0); CommonRequestModels data = new CommonRequestModels(); var isExist = await db.TutorSchedules .Where(x => x.Id.ToString() != model.Schedule_Id && x.Tutor_UserAccounts_Id == user_id && x.DayOfWeek == dow && x.StartTime == start && x.EndTime == end).FirstOrDefaultAsync(); if (isExist != null) { data.Message = "This schedule already exist."; } else { if (start.Hour > end.Hour || (start.Hour == end.Hour && start.Minute > end.Minute)) { data.Message = "The Start Time cannot greater than End Time"; } } if (string.IsNullOrEmpty(data.Message)) { var current_data = await db.TutorSchedules.Where(x => x.Id.ToString() == model.Schedule_Id).FirstOrDefaultAsync(); current_data.Tutor_UserAccounts_Id = user_id; current_data.DayOfWeek = dow; current_data.StartTime = start; current_data.EndTime = end; //current_data.IsActive = tutorSchedulesModels.IsActive; current_data.Notes = model.Notes; db.Entry(current_data).State = EntityState.Modified; await db.SaveChangesAsync(); } return(Request.CreateResponse(HttpStatusCode.OK, data)); }
public async Task <CommonRequestModels> ScheduleAddApi(string username, string day, string start, string end, string notes) { using (var client = new HttpClient()) { var formContent = new FormUrlEncodedContent(new[] { new KeyValuePair <string, string>("username", username), new KeyValuePair <string, string>("day", day), new KeyValuePair <string, string>("start", start), new KeyValuePair <string, string>("end", end), new KeyValuePair <string, string>("notes", notes) }); var request = await client.PostAsync(baseurl + "api/scheduleadd", formContent); var content = await request.Content.ReadAsStringAsync(); CommonRequestModels response = JsonConvert.DeserializeObject <CommonRequestModels>(content); return(response); } }
public async Task <HttpResponseMessage> Schedules(CommonRequestModels model) { var user_login = await(from u in db.User join ur in db.UserRole on u.Id equals ur.UserId join r in db.Role on ur.RoleId equals r.Id where u.UserName == model.Username select new { u, ur, r }).FirstOrDefaultAsync(); List <ScheduleApiModels> list = new List <ScheduleApiModels>(); if (user_login.r.Name.ToLower() == "student") { var items = await(from tss in db.TutorStudentSchedules join s in db.User on tss.Student_UserAccounts_Id equals s.Id join t in db.User on tss.Tutor_UserAccounts_Id equals t.Id join sii in db.SaleInvoiceItems on tss.InvoiceItems_Id equals sii.Id join lp in db.LessonPackages on sii.LessonPackages_Id equals lp.Id where tss.Student_UserAccounts_Id == user_login.u.Id orderby tss.DayOfWeek select new { tss, s, t, sii, lp }).ToListAsync(); foreach (var item in items) { list.Add(new ScheduleApiModels { Schedule_Id = item.tss.Id, TimeSchedule = string.Format("{0}, {1:HH:mm} - {2:HH:mm}", item.tss.DayOfWeek.ToString(), item.tss.StartTime, item.tss.EndTime), Lesson = item.lp.Name, Tutor = string.Format("Tutor: {0} {1} {2}", item.t.Firstname, item.t.Middlename, item.t.Lastname), Notes = string.IsNullOrEmpty(item.tss.Notes) ? string.Empty : string.Format("Notes: {0}", item.tss.Notes), Role = "student" }); } } else //tutor { var items = await(from ts in db.TutorSchedules join u in db.User on ts.Tutor_UserAccounts_Id equals u.Id where ts.Tutor_UserAccounts_Id == user_login.u.Id orderby ts.DayOfWeek select new { ts, u }).ToListAsync(); foreach (var item in items) { list.Add(new ScheduleApiModels { Schedule_Id = item.ts.Id, TimeSchedule = string.Format("Tutor: {0} {1} {2}", item.u.Firstname, item.u.Middlename, item.u.Lastname), Lesson = string.Format("{0}, {1:HH:mm} - {2:HH:mm}", item.ts.DayOfWeek.ToString(), item.ts.StartTime, item.ts.EndTime), Tutor = string.IsNullOrEmpty(item.ts.Notes) ? string.Empty : string.Format("Notes: {0}", item.ts.Notes), Notes = string.Empty, Role = "tutor" }); } } if (list == null) { return(Request.CreateResponse(HttpStatusCode.NotFound, list)); } else { return(Request.CreateResponse(HttpStatusCode.OK, list)); } }
public HttpResponseMessage Sessions(CommonRequestModels model) { var roles = (from u in db.User join ur in db.UserRole on u.Id equals ur.UserId join r in db.Role on ur.RoleId equals r.Id where u.UserName == model.Username select new { u, r }).ToList(); string role = ""; if (roles.Count == 1) { foreach (var r in roles) { if (r.r.Name.ToLower() == "student" || r.r.Name.ToLower() == "tutor") { role = r.r.Name; } } } var sessions = (role.ToLower() == "student") ? (from ls in db.LessonSessions join t in db.User on ls.Tutor_UserAccounts_Id equals t.Id join sii in db.SaleInvoiceItems on ls.SaleInvoiceItems_Id equals sii.Id join si in db.SaleInvoices on sii.SaleInvoices_Id equals si.Id join s in db.User on si.Customer_UserAccounts_Id equals s.Id join lp in db.LessonPackages on sii.LessonPackages_Id equals lp.Id where s.UserName == model.Username select new { ls, t, sii, si, s, lp }).ToList() : (role.ToLower() == "tutor") ? (from ls in db.LessonSessions join t in db.User on ls.Tutor_UserAccounts_Id equals t.Id join sii in db.SaleInvoiceItems on ls.SaleInvoiceItems_Id equals sii.Id join si in db.SaleInvoices on sii.SaleInvoices_Id equals si.Id join s in db.User on si.Customer_UserAccounts_Id equals s.Id join lp in db.LessonPackages on sii.LessonPackages_Id equals lp.Id where t.UserName == model.Username select new { ls, t, sii, si, s, lp }).ToList() : null; List <SessionApiModels> list = new List <SessionApiModels>(); if (sessions.Count > 0) { foreach (var session in sessions.OrderByDescending(x => x.ls.Timestamp)) { list.Add(new SessionApiModels { SaleInvoiceItems_Id = session.sii.Id, Date = string.Format("{0:yyy/MM/dd HH:mm}", session.ls.Timestamp), Lesson = session.lp.Name, Hour = session.ls.SessionHours, Tutor = session.t.Firstname + " " + session.t.Middlename + " " + session.t.Lastname, Student = session.s.Firstname + " " + session.s.Middlename + " " + session.s.Lastname, Review = session.ls.Review }); } } if (list == null) { return(Request.CreateResponse(HttpStatusCode.NotFound, list)); } else { return(Request.CreateResponse(HttpStatusCode.OK, list)); } }