public ResponseBase ThemPhieu(string connectString, int stt, int dichvuId, string maphieuDichVu, string maCongViec, string maLoaiCongViec, TimeSpan?serveTimeAllow, DateTime printTime) { var rs = new ResponseBase(); Q_DailyRequire rq = null, modelObj = new Q_DailyRequire(); int _serviceNumber = 0; using (var db = new QMSSystemEntities(connectString)) { if (!string.IsNullOrEmpty(maCongViec) && !string.IsNullOrEmpty(maLoaiCongViec)) { modelObj = LayGioPhucVuDuKien(db, maCongViec, maLoaiCongViec, modelObj); if (serveTimeAllow.HasValue) { modelObj.ServeTimeAllow = modelObj.ServeTimeAllow.Add(serveTimeAllow.Value); } serveTimeAllow = modelObj.ServeTimeAllow; } var ser = db.Q_Service.FirstOrDefault(x => x.Id == dichvuId); if (ser != null) { _serviceNumber = ser.StartNumber; if (!serveTimeAllow.HasValue) { serveTimeAllow = ser.TimeProcess.TimeOfDay; } } var nv = db.Q_ServiceStep.Where(x => !x.IsDeleted && !x.Q_Service.IsDeleted && x.ServiceId == dichvuId).OrderBy(x => x.Index).FirstOrDefault(); if (nv == null) { rs.IsSuccess = false; rs.Errors.Add(new Error() { MemberName = "Lỗi Nghiệp vụ", Message = "Lỗi: Dịch vụ này chưa được phân nghiệp vụ. Vui lòng liên hệ người quản lý hệ thống. Xin cám ơn!.." }); } else { modelObj.TicketNumber = stt; modelObj.ServiceId = dichvuId; modelObj.BusinessId = null; modelObj.PrintTime = printTime; modelObj.ServeTimeAllow = serveTimeAllow ?? new TimeSpan(0, 0, 0); modelObj.CustomerName = ""; // Name; modelObj.CustomerDOB = 0; // DOB; modelObj.CustomerAddress = ""; // Address; modelObj.MaBenhNhan = ""; // MaBenhNhan; modelObj.MaPhongKham = ""; // MaPhongKham; modelObj.STT_PhongKham = maphieuDichVu; modelObj.CarNumber = ""; // SoXe; modelObj.Q_DailyRequire_Detail = new Collection <Q_DailyRequire_Detail>(); var foundService = db.Q_Service.FirstOrDefault(x => x.Id == dichvuId); var detail = new Q_DailyRequire_Detail(); detail.Q_DailyRequire = modelObj; detail.MajorId = nv.MajorId; detail.StatusId = (int)eStatus.CHOXL; if (foundService != null && foundService.AutoEnd) { detail.StatusId = (int)eStatus.HOTAT; var now = DateTime.Now; var timeend = foundService.TimeAutoEnd != null ? foundService.TimeAutoEnd.Value.TimeOfDay : new TimeSpan(0, 10, 00); detail.ProcessTime = now; detail.EndProcessTime = now.AddMinutes(timeend.TotalMinutes); } modelObj.Q_DailyRequire_Detail.Add(detail); db.Q_DailyRequire.Add(modelObj); var sodanggoi = db.Q_DailyRequire_Detail.Where(x => x.Q_DailyRequire.ServiceId == dichvuId && x.StatusId == (int)eStatus.DAGXL).OrderByDescending(x => x.ProcessTime).FirstOrDefault(); var userIds = (from x in db.Q_UserMajor where x.MajorId == nv.MajorId && !x.IsDeleted select x.UserId).ToList(); var equipCodes = (from x in db.Q_Login where x.StatusId == (int)eStatus.LOGIN && userIds.Contains(x.UserId) && !x.Q_User.IsDeleted select x.EquipCode).ToList(); var tq = (from x in db.Q_Equipment where (equipCodes.Count == 0 && userIds.Count > 0 ? userIds.Contains(x.Code) : equipCodes.Contains(x.Code)) && !x.IsDeleted && !x.Q_Counter.IsDeleted select x.Q_Counter.Name).ToArray(); var tqs = String.Join("@", tq).Replace("@", ("" + System.Environment.NewLine)); db.SaveChanges(); rs.IsSuccess = true; rs.Data = (stt - 1); rs.Data_1 = detail.MajorId; rs.Records = (sodanggoi != null ? sodanggoi.Q_DailyRequire.TicketNumber : 0); rs.Data_2 = tqs; rs.Data_3 = modelObj.TicketNumber; rs.Data_4 = modelObj; } } return(rs); }
public ResponseBase CapSoPhongKhamKhongHen(string connectString, int dichvuId, DateTime printTime) { var rs = new ResponseBase(); var modelObj = new Q_DailyRequire(); int _serviceStartNumber = 0; TimeSpan?serveTimeAllow = new TimeSpan(0, 0, 0), tgGoiDK = new TimeSpan(0, 0, 0); using (var db = new QMSSystemEntities(connectString)) { var dichvu = db.Q_Service.FirstOrDefault(x => x.Id == dichvuId); if (dichvu != null) { _serviceStartNumber = dichvu.StartNumber; serveTimeAllow = dichvu.TimeProcess.TimeOfDay; } var nv = db.Q_ServiceStep .Where(x => !x.IsDeleted && !x.Q_Service.IsDeleted && x.ServiceId == dichvuId) .OrderBy(x => x.Index) .FirstOrDefault(); if (nv == null) { rs.IsSuccess = false; rs.Errors.Add(new Error() { MemberName = "Lỗi Nghiệp vụ", Message = "Lỗi: Dịch vụ này chưa được phân nghiệp vụ. Vui lòng liên hệ người quản lý hệ thống. Xin cám ơn!.." }); } else { int stt = 0; var lastTicket = db.Q_DailyRequire .Where(x => x.ServiceId == dichvuId && x.Type == (int)eDailyRequireType.KhamBenh) .OrderByDescending(x => x.TicketNumber) .FirstOrDefault(); if (lastTicket != null) { stt = lastTicket.TicketNumber + 1; } else { stt = _serviceStartNumber; } modelObj.TicketNumber = stt; modelObj.ServiceId = dichvuId; modelObj.BusinessId = null; modelObj.PrintTime = printTime; modelObj.ServeTimeAllow = serveTimeAllow ?? new TimeSpan(0, 0, 0); modelObj.Type = (int)eDailyRequireType.KhamBenh; modelObj.Q_DailyRequire_Detail = new Collection <Q_DailyRequire_Detail>(); var detail = new Q_DailyRequire_Detail(); detail.Q_DailyRequire = modelObj; detail.MajorId = nv.MajorId; detail.StatusId = (int)eStatus.CHOXL; if (dichvu != null && dichvu.AutoEnd) { detail.StatusId = (int)eStatus.HOTAT; var now = DateTime.Now; var timeend = dichvu.TimeAutoEnd != null ? dichvu.TimeAutoEnd.Value.TimeOfDay : new TimeSpan(0, 10, 00); detail.ProcessTime = now; detail.EndProcessTime = now.AddMinutes(timeend.TotalMinutes); } modelObj.Q_DailyRequire_Detail.Add(detail); db.Q_DailyRequire.Add(modelObj); var sodanggoi = db.Q_DailyRequire_Detail.Where(x => x.Q_DailyRequire.ServiceId == dichvuId && x.StatusId == (int)eStatus.DAGXL).OrderByDescending(x => x.ProcessTime).FirstOrDefault(); var userIds = (from x in db.Q_UserMajor where x.MajorId == nv.MajorId && !x.IsDeleted select x.UserId).ToList(); var equipCodes = (from x in db.Q_Login where x.StatusId == (int)eStatus.LOGIN && userIds.Contains(x.UserId) && !x.Q_User.IsDeleted select x.EquipCode).ToList(); var tq = (from x in db.Q_Equipment where (equipCodes.Count == 0 && userIds.Count > 0 ? userIds.Contains(x.Code) : equipCodes.Contains(x.Code)) && !x.IsDeleted && !x.Q_Counter.IsDeleted select x.Q_Counter.Name).ToArray(); var tqs = String.Join("@", tq).Replace("@", ("" + System.Environment.NewLine)); db.SaveChanges(); rs.IsSuccess = true; rs.Data = (stt - 1); rs.Data_1 = detail.MajorId; rs.Records = (sodanggoi != null ? sodanggoi.Q_DailyRequire.TicketNumber : 0); rs.Data_2 = tqs; rs.Data_3 = stt; } } return(rs); }
public ResponseBaseModel CallAny(string connectString, int userId, int equipCode, int ticket, DateTime date, int serviceType) { ResponseBaseModel res = new ResponseBaseModel(); bool hasChange = false; try { using (db = new QMSSystemEntities(connectString)) { var oldTickets = db.Q_DailyRequire_Detail.Where(x => x.Q_DailyRequire.TicketNumber != ticket && x.UserId == userId && x.EquipCode == equipCode && x.StatusId == (int)eStatus.DAGXL); if (oldTickets != null && oldTickets.Count() > 0) { foreach (var item in oldTickets) { item.StatusId = (int)eStatus.HOTAT; item.EndProcessTime = DateTime.Now; } hasChange = true; } var equip = db.Q_Equipment.FirstOrDefault(x => !x.IsDeleted && x.Code == equipCode); var check = db.Q_DailyRequire_Detail.FirstOrDefault(x => x.Q_DailyRequire.TicketNumber == ticket && (x.StatusId == (int)eStatus.CHOXL || x.StatusId == (int)eStatus.DAGXL || x.StatusId == (int)eStatus.QUALUOT) && x.Q_DailyRequire.Q_Service.ServiceType == serviceType); if (check != null) { if (check.StatusId != (int)eStatus.DAGXL) { check.UserId = userId; check.EquipCode = equipCode; check.StatusId = (int)eStatus.DAGXL; check.ProcessTime = DateTime.Now; } hasChange = true; res.Data_3 = new TicketInfo() { RequireDetailId = check.Id, RequireId = check.DailyRequireId, StartTime = check.ProcessTime.Value.TimeOfDay, TimeServeAllow = check.Q_DailyRequire.ServeTimeAllow, TicketNumber = check.Q_DailyRequire.TicketNumber, CounterId = equip.CounterId, PrintTime = check.Q_DailyRequire.PrintTime, EquipCode = equipCode }; db.Database.ExecuteSqlCommand("update Q_Counter set LastCall =" + check.Q_DailyRequire.TicketNumber + ", CurrentNumber=" + check.Q_DailyRequire.TicketNumber + " where Id =" + equip.CounterId); } else { var mj = db.Q_UserMajor.Where(x => !x.IsDeleted && !x.Q_User.IsDeleted && !x.Q_Major.IsDeleted && x.UserId == userId).OrderBy(x => x.Index).FirstOrDefault(); if (mj != null) { var rq = db.Q_DailyRequire.FirstOrDefault(x => x.TicketNumber == ticket && x.Q_Service.ServiceType == serviceType); if (rq != null) { var newobj = new Q_DailyRequire_Detail(); newobj.DailyRequireId = rq.Id; newobj.MajorId = mj.MajorId; newobj.UserId = userId; newobj.EquipCode = equipCode; newobj.StatusId = (int)eStatus.DAGXL; newobj.ProcessTime = DateTime.Now; db.Q_DailyRequire_Detail.Add(newobj); hasChange = true; res.Data_3 = new TicketInfo() { RequireDetailId = newobj.Id, RequireId = newobj.DailyRequireId, StartTime = newobj.ProcessTime.Value.TimeOfDay, TimeServeAllow = rq.ServeTimeAllow, TicketNumber = rq.TicketNumber, CounterId = equip.CounterId, PrintTime = rq.PrintTime, EquipCode = equipCode }; db.Database.ExecuteSqlCommand("update Q_Counter set LastCall =" + rq.TicketNumber + ", CurrentNumber=" + rq.TicketNumber + " where Id =" + equip.CounterId); } else { res.IsSuccess = false; res.sms = "Không tìm thấy số phiếu " + ticket; res.Title = "Lỗi"; } } else { res.IsSuccess = false; res.sms = "Nhân viên chưa được phân nghiệp vụ"; res.Title = "Lỗi"; } } if (hasChange) { db.SaveChanges(); res.IsSuccess = true; } } } catch (Exception ex) { res.IsSuccess = false; res.sms = "Lỗi thực thi dữ liệu"; res.Title = "Lỗi"; } return(res); }
public ResponseBase InsertServiceRequire(Q_DailyRequire model, string connectString) { using (var db = new QMSSystemEntities(connectString)) { try { var result = new ResponseBase(); var checkExists = db.Q_DailyRequire.FirstOrDefault(x => x.PhoneNumber == model.PhoneNumber && x.ServiceId == model.ServiceId); if (checkExists != null) { result.IsSuccess = true; result.Data = "Khách hàng có Số điện thoại : " + checkExists.PhoneNumber + " <br/>đã đăng ký dịch vụ : " + checkExists.Q_Service.Name + "<br/>được cấp STT : " + checkExists.TicketNumber + "<br/>Thời gian phục vụ dự kiến :" + (checkExists.TGDKien.HasValue ? checkExists.TGDKien.Value.ToString("HH'h : 'mm") : ""); } else { var dichvu = db.Q_Service.Where(x => x.Id == model.ServiceId).FirstOrDefault(); var serviceMajor = db.Q_ServiceStep.Where(x => !x.IsDeleted).OrderBy(x => x.Index).FirstOrDefault(); double minutes = 0; DateTime time = DateTime.Now; if (dichvu != null && serviceMajor != null) { var phieuDV = db.Q_DailyRequire_Detail.Where(x => x.Q_DailyRequire.ServiceId == model.ServiceId).OrderByDescending(x => x.Q_DailyRequire.PrintTime).Select(x => new { PrintTime = x.Q_DailyRequire.PrintTime, TicketNumber = x.Q_DailyRequire.TicketNumber, StatusId = x.StatusId }).ToList(); model.PrintTime = time; // model.sta = eStatusName.Wating; if (phieuDV.Count > 0) { model.TicketNumber = phieuDV[0].TicketNumber + 1; var phieuDangXL = phieuDV.Where(x => (int)eStatus.DAGXL == x.StatusId).FirstOrDefault(); if (phieuDangXL != null) { minutes = (dichvu.TimeProcess.TimeOfDay).TotalMinutes * ((int)phieuDV[0].TicketNumber - (int)phieuDangXL.TicketNumber); } else { minutes = (dichvu.TimeProcess.TimeOfDay).TotalMinutes * phieuDV.Count; } model.TGDKien = time.AddMinutes(minutes); } else { model.TicketNumber = dichvu.StartNumber; model.TGDKien = time; } Q_DailyRequire_Detail modelDetail = new Q_DailyRequire_Detail(); modelDetail.Q_DailyRequire = model; modelDetail.MajorId = serviceMajor.MajorId; modelDetail.StatusId = (int)eStatus.CHOXL; model.Q_DailyRequire_Detail = new List <Q_DailyRequire_Detail>(); model.Q_DailyRequire_Detail.Add(modelDetail); db.Q_DailyRequire.Add(model); db.SaveChanges(); result.IsSuccess = true; result.Data = "Khách hàng có Số điện thoại : " + model.PhoneNumber + " <br/>đã chọn Dịch vụ : " + dichvu.Name + "<br/>được cấp STT : " + model.TicketNumber + "<br/>Thời gian phục vụ dự kiến :" + model.TGDKien.Value.ToString("HH'h : 'mm"); } else { result.IsSuccess = false; result.Errors.Add(new Error() { MemberName = "them", Message = "Không tìm thấy Dịch Vu theo yêu cầu.Vui lòng thử lại." }); } } return(result); } catch (Exception ex) { throw ex; } } }