protected string getPersonToVisit(object id, SharedClass.RelationType relation) { using (Medical_Clinic_Entities mc = new Medical_Clinic_Entities()) { var visitingFile = mc.Petient_Visiting_Financials.Where(o => o.Id == (long)id).First(); var persons = visitingFile.Connectors.Where(o => o.RelationType == SharedClass.GetRelationType(relation)).ToList(); if (persons.Count() != 0) { return persons.First().BSI__Clinic_Employees.First_Name + " " + persons.First().BSI__Clinic_Employees.Last_Name; } else { return nobody; } } }
protected string getPersonToVisitValue(object id, SharedClass.RelationType relation) { using (Medical_Clinic_Entities mc = new Medical_Clinic_Entities()) { var visitingFile = mc.Petient_Visiting_Financials.Where(o => o.Id == (long)id).First(); var employees = visitingFile.Connectors.Where(o => o.RelationType == SharedClass.GetRelationType(relation)).ToList(); if (employees.Count() != 0) { var employee = employees.First().BSI__Clinic_Employees; return employee.Id; } else { return ""; } } }
public void getServicesOfFile(out string reason, out int? service, out List<int> parts, ref ServicesControl ucServicesControl) { using (Medical_Clinic_Entities mc = new Medical_Clinic_Entities()) { service = (ucServicesControl.SelectedService != ucServicesControl.OthersValue) ? ucServicesControl.SelectedService : null; parts = ucServicesControl.SelectedParts; if (service != null) { reason = null; } else { reason = ucServicesControl.ReasonValue; } } }
protected void Page_LoadComplete(object sender, EventArgs e) { using (Medical_Clinic_Entities mc = new Medical_Clinic_Entities()) { var petientId = Guid.Parse(Request["ID"]); var firstJoin = mc.Petients.Where(o => o.Id == petientId).Join (mc.Connectors, oOtter => oOtter.Id, oInner => oInner.PetientId, (petient, connector) => new { petient, connector }); var grvStateDataSource = mc.Petient_Visiting_Financials.Join(firstJoin, oOtter => oOtter.Id, oInner => oInner.connector.FinancialId, (financial, prevJoin) => new { Id = financial.Id, EmployeeId = prevJoin.connector.EmployeeId, Petient_Id = prevJoin.petient.Id, First_Name = prevJoin.petient.First_Name, Last_Name = prevJoin.petient.Last_Name, Age = prevJoin.petient.Age, Mobile = prevJoin.petient.Mobile, TimeVisitStarts = financial.TimeVisitStarts, TimeVisitEnds = financial.TimeVisitEnds, Money_To_Pay = financial.Money_To_Pay, Money_Changed = financial.Money_Changed, Money_Paid_Cash = financial.Money_Paid_Cash, Money_Paid_Card = financial.Money_Paid_Card, Balance = financial.Balance, POS_Name = financial.POS_Name, Description = financial.Description, Is_Petient_Returned = financial.Is_Petient_Returned, Is_Money_Paid = financial.Is_Money_Paid, Is_Petient_Visited = financial.Is_Petient_Visited, Is_Petient_Canceled = financial.Is_Petient_Canceled }).GroupBy(o => o.Id).Select(o => o.FirstOrDefault()).OrderBy(o => o.TimeVisitStarts).ToList(); //Sometimes there are two rows per recored on gridview. Because of the Tech, Doctor pairs. grvFinancialHistory.DataSource = grvStateDataSource; grvFinancialHistory.DataBind(); } }
private int? getSelectedServiceEmployee(int? serviceId, string employeeId, ref ServicesControl ucServicesControl) { using (Medical_Clinic_Entities mc = new Medical_Clinic_Entities()) { if (serviceId == null || serviceId == ucServicesControl.OthersValue) { return null; } else { if (mc.BSI__Employee_Service_Set.Where(o => o.Service_Id == serviceId && o.Employee_Id == employeeId).Count() != 0) { return mc.BSI__Employee_Service_Set.Where(o => o.Service_Id == serviceId && o.Employee_Id == employeeId).First().Id; } else { return null; } } } }
private void createRemoveConnections(Medical_Clinic_Entities mc, int? selectedService, Guid petientId, long financialId, List<int> selectedParts, ref ServicesControl ucServicesControl, ref DropDownList ddlDoctor, ref DropDownList ddlTech) { var connectors = mc.Connectors.Where(o => o.FinancialId == financialId).ToList(); var petientFileId = connectors.First().FileId; var petientFileWriter = connectors.Where(o => o.RelationType == SharedClass.GetRelationType(SharedClass.RelationType.Writer)).FirstOrDefault(); var petientFileWriterId = (petientFileWriter == null) ? null : petientFileWriter.EmployeeId; //If was not NULL it means that a file has been created. //Writer if (petientFileWriterId != null) { ModelClass.RemoveConnectorObjectUsingFileId(petientFileId, SharedClass.RelationType.Writer); ModelClass.CreateConnectorObject( mc, SharedClass.CurrentUser, selectedService, getSelectedServiceEmployee(ucServicesControl.SelectedService, SharedClass.CurrentUser, ref ucServicesControl), petientId, petientFileId, financialId, SharedClass.RelationType.Writer ); } //Doctor ModelClass.RemoveConnectorObjectUsingFinancialId(financialId, SharedClass.RelationType.Doctor); if (ddlDoctor.SelectedValue.ToString() != "") { ModelClass.CreateConnectorObject( mc, ddlDoctor.SelectedValue, selectedService, getSelectedServiceEmployee(ucServicesControl.SelectedService, ddlDoctor.SelectedValue, ref ucServicesControl), petientId, petientFileId, financialId, SharedClass.RelationType.Doctor ); if (selectedParts != null) { ModelClass.CreateConnectorObject( mc, ddlDoctor.SelectedValue, selectedParts, petientId, petientFileId, financialId, SharedClass.RelationType.Doctor ); } } //Tech ModelClass.RemoveConnectorObjectUsingFinancialId(financialId, SharedClass.RelationType.Technician); if (ddlTech.SelectedValue.ToString() != "") { ModelClass.CreateConnectorObject( mc, ddlTech.SelectedValue, selectedService, getSelectedServiceEmployee(ucServicesControl.SelectedService, ddlTech.SelectedValue, ref ucServicesControl), petientId, petientFileId, financialId, SharedClass.RelationType.Technician ); if (selectedParts != null) { ModelClass.CreateConnectorObject( mc, ddlTech.SelectedValue, selectedParts, petientId, petientFileId, financialId, SharedClass.RelationType.Technician ); } } }
private int costOfService(int? serviceId, ref ServicesControl ucServicesControl) { int totalCost = 0; if (serviceId != null) { var servicePartIds = ucServicesControl.SelectedParts; if (servicePartIds != null) { using (Medical_Clinic_Entities mc = new Medical_Clinic_Entities()) { foreach (var partId in servicePartIds) { totalCost = totalCost + mc.BSI__Clinic_Services.Where(o => o.Id == partId).First().Cost; } totalCost = totalCost + mc.BSI__Clinic_Services.Where(o => o.Id == serviceId).First().Cost; } } return totalCost; } else { return totalCost; } }
private void bindGridView() { using (Medical_Clinic_Entities mc = new Medical_Clinic_Entities()) { //Financials var financials = mc.Petient_Visiting_Financials.Where(o => DbFunctions.TruncateTime(o.TimeVisitStarts) >= calFrom.Date && DbFunctions.TruncateTime(o.TimeVisitStarts) <= calTo.Date); //Petients IQueryable<Petient> petients = mc.Petients; if (txtPetientFirstName.Text != "") { petients = petients.Where(o => o.First_Name.Contains(txtPetientFirstName.Text)); } if (txtPetientLastName.Text != "") { petients = petients.Where(o => o.Last_Name.Contains(txtPetientLastName.Text)); } if (txtPetientMobile.Text != "") { petients = petients.Where(o => o.Mobile.Contains(txtPetientMobile.Text)); } //Connectors (To filter doctor and tech and services) IQueryable<Connector> connectors; //Doctor And Tech Both Are Combined In DDL if (ddlEmployees.SelectedValue != "") { connectors = mc.Connectors.Where(o => o.BSI__Clinic_Employees.Id == ddlEmployees.SelectedValue); } else { connectors = mc.Connectors; } //Filter Specified Services if(ucServicesControlSearch.SelectedService != ucServicesControlSearch.RootValue && ucServicesControlSearch.SelectedService != ucServicesControlSearch.OthersValue) { connectors = connectors.Where(o => o.BSI__Clinic_Services.Id == ucServicesControlSearch.SelectedService); } else if (ucServicesControlSearch.SelectedService == ucServicesControlSearch.OthersValue) { financials = financials.Where(o => o.Reason == ucServicesControlSearch.ReasonValue); } //Joining Petient-Connection var firstJoin = petients.Join(connectors, oOtter => oOtter.Id, oInner => oInner.PetientId, (petient, connector) => new { petient, connector }); var grvTimeDataSource = financials.Join(firstJoin, oOtter => oOtter.Id, oInner => oInner.connector.FinancialId, (financial, prevJoin) => new { Id = financial.Id, First_Name = prevJoin.petient.First_Name, Last_Name = prevJoin.petient.Last_Name, Mobile = prevJoin.petient.Mobile, TimeVisitStarts = financial.TimeVisitStarts, TimeVisitEnds = financial.TimeVisitEnds, Is_Petient_Canceled = financial.Is_Petient_Canceled }).Distinct() .OrderBy(o => o.TimeVisitStarts).ToList(); //Sometimes there are two rows per recored on gridview. Because of the Tech, Doctor pairs. grvTime.DataSource = grvTimeDataSource; grvTime.DataBind(); //TODO: Cache the datasource and make it only relate to btnSearch. } }
protected void grvTime_RowUpdating(object sender, GridViewUpdateEventArgs e) { using (Medical_Clinic_Entities mc = new Medical_Clinic_Entities()) { var row = grvTime.Rows[e.RowIndex]; var financialId = (long)grvTime.DataKeys[e.RowIndex].Value; var financialFile = mc.Petient_Visiting_Financials.Where(o => o.Id == financialId).First(); var petientId = financialFile.Connectors.First().Petient.Id; var calEdit = (JQControls.JQDatePicker)row.FindControl("calEdit"); var ucTimePickerControlStart = (Controls.TimePickerControl)row.FindControl("ucTimePickerControlStart"); var ucTimePickerControlEnd = (Controls.TimePickerControl)row.FindControl("ucTimePickerControlEnd"); var ucServicesControl = (ServicesControl)row.FindControl("ucServicesControl"); var ddlDoctorEdit = (DropDownList)row.FindControl("ddlDoctorEdit"); var ddlTechEdit = (DropDownList)row.FindControl("ddlTechEdit"); var chkIsPetientCanceled = (CheckBox)row.FindControl("chkIsPetientCanceled"); //Change Timing var date = calEdit.Date.Value.Date; var startTime = ucTimePickerControlStart.Time; var timeVisitStarts = new DateTime(date.Year, date.Month, date.Day, startTime.Hour, startTime.Minute, 0); var endTime = ucTimePickerControlEnd.Time; var timeVisitEnds = new DateTime(date.Year, date.Month, date.Day, endTime.Hour, endTime.Minute, 0); financialFile.TimeVisitStarts = timeVisitStarts; financialFile.TimeVisitEnds = timeVisitEnds; //Change Doctor, Tech //Change Service string reason = null; int? selectedService = null; List<int> selectedParts = null; getServicesOfFile(out reason, out selectedService, out selectedParts, ref ucServicesControl); financialFile.Reason = reason; createRemoveConnections(mc, selectedService, financialFile.Connectors.First().Petient.Id, financialId, selectedParts, ref ucServicesControl, ref ddlDoctorEdit, ref ddlTechEdit); //Canceled financialFile.Is_Petient_Canceled = chkIsPetientCanceled.Checked; if (financialFile.Is_Petient_Canceled == false) { //Recalculate Balance On Not Canceled if (reason == null) { financialFile.Money_To_Pay = costOfService(ucServicesControl.SelectedService, ref ucServicesControl); } else { financialFile.Money_To_Pay = 0; } int lastBalance = 0; var petientVisitingFiles = mc.Connectors.Where(o => o.PetientId == petientId && o.FinancialId != null && o.Petient_Visiting_Financials.TimeVisitStarts < financialFile.TimeVisitStarts) .OrderByDescending(o => o.Petient_Visiting_Financials.TimeVisitStarts).ToList(); if (petientVisitingFiles.Count() != 0) { lastBalance = petientVisitingFiles.ElementAt(petientVisitingFiles.IndexOf(petientVisitingFiles.First())).Petient_Visiting_Financials.Balance; } financialFile.Balance = lastBalance + (financialFile.Money_To_Pay - (financialFile.Money_Paid_Cash + financialFile.Money_Paid_Card)); if (financialFile.Money_Changed != null) { financialFile.Balance = financialFile.Balance + financialFile.Money_Changed.Value; } } else { //Recalculate Balance On Canceled int lastBalance = 0; var petientVisitingFiles = mc.Connectors.Where(o => o.PetientId == petientId && o.FinancialId != null && o.Petient_Visiting_Financials.TimeVisitStarts < financialFile.TimeVisitStarts) .OrderByDescending(o => o.Petient_Visiting_Financials.TimeVisitStarts).ToList(); if (petientVisitingFiles.Count() != 0) { lastBalance = petientVisitingFiles.ElementAt(petientVisitingFiles.IndexOf(petientVisitingFiles.First())).Petient_Visiting_Financials.Balance; } financialFile.Money_Changed = 0; financialFile.Money_Paid_Cash = 0; financialFile.Money_Paid_Card = 0; financialFile.POS_Name = ""; financialFile.Balance = lastBalance; financialFile.Is_Petient_Returned = false; financialFile.Is_Money_Paid = false; financialFile.Is_Petient_Visited = false; } //Save Changes mc.SaveChanges(); } grvTime.EditIndex = -1; bindGridView(); }
protected void grvTime_RowEditing(object sender, GridViewEditEventArgs e) { grvTime.EditIndex = e.NewEditIndex; bindGridView(); if (grvTime.EditIndex != -1 && e.NewEditIndex == grvTime.EditIndex) { var row = grvTime.Rows[e.NewEditIndex]; var ucServicesControl = (ServicesControl)row.FindControl("ucServicesControl"); using (Medical_Clinic_Entities mc = new Medical_Clinic_Entities()) { var id = (long)grvTime.DataKeys[e.NewEditIndex].Value; var financialToEdit = mc.Petient_Visiting_Financials.Where(o => o.Id == id).First(); if (financialToEdit.Connectors.Where(o => o.BSI__Employee_Service_Set != null).FirstOrDefault() == null) { ucServicesControl.SelectedService = ucServicesControl.OthersValue; ucServicesControl.ReasonValue = financialToEdit.Reason; } else { var serviceOfFile = financialToEdit.Connectors.Where(o => o.BSI__Employee_Service_Set != null && o.BSI__Clinic_Services.Is_Part != true).First(); ucServicesControl.SelectedService = serviceOfFile.BSI__Clinic_Services.Id; var partsOfFile = financialToEdit.Connectors.Where(o => o.BSI__Employee_Service_Set != null && o.BSI__Clinic_Services.Is_Part == true).ToList(); ucServicesControl.SelectedParts = partsOfFile.GroupBy(o => o.ServiceId).Select(o => o.FirstOrDefault().ServiceId.Value).ToList(); } } ucServicesControl.MakeTree(); } }
protected void grvTime_RowDeleting(object sender, GridViewDeleteEventArgs e) { var id = long.Parse(grvTime.DataKeys[e.RowIndex].Value.ToString()); using (Medical_Clinic_Entities mc = new Medical_Clinic_Entities()) { var financialFileToDelete = mc.Petient_Visiting_Financials.Where(o => o.Id == id).First(); mc.Petient_Visiting_Financials.Remove(financialFileToDelete); mc.SaveChanges(); } bindGridView(); }
private void bindGridView() { using (Medical_Clinic_Entities mc = new Medical_Clinic_Entities()) { //Financials var financials = mc.Petient_Visiting_Financials.Where(o => DbFunctions.TruncateTime(o.TimeVisitStarts) >= calFrom.Date && DbFunctions.TruncateTime(o.TimeVisitStarts) <= calTo.Date && o.Connectors.Count != 0); //Petients IQueryable<Petient> petients = mc.Petients; if (txtPetientFirstName.Text != "") { petients = petients.Where(o => o.First_Name.Contains(txtPetientFirstName.Text)); } if (txtPetientLastName.Text != "") { petients = petients.Where(o => o.Last_Name.Contains(txtPetientLastName.Text)); } if (txtPetientMobile.Text != "") { petients = petients.Where(o => o.Mobile.Contains(txtPetientMobile.Text)); } //Connectors (To filter doctor and tech and services) IQueryable<Connector> connectors; //Doctor And Tech Both Are Combined In DDL if (ddlEmployees.SelectedValue != "") { connectors = mc.Connectors.Where(o => o.BSI__Clinic_Employees.Id == ddlEmployees.SelectedValue); } else { connectors = mc.Connectors; } //Filter Specified Services if (ucServicesControlSearch.SelectedService != ucServicesControlSearch.RootValue && ucServicesControlSearch.SelectedService != ucServicesControlSearch.OthersValue) { connectors = connectors.Where(o => o.BSI__Clinic_Services.Id == ucServicesControlSearch.SelectedService); } else if (ucServicesControlSearch.SelectedService == ucServicesControlSearch.OthersValue) { financials = financials.Where(o => o.Reason == ucServicesControlSearch.ReasonValue); } //Petients Not Returned if (chkNotReturnedMode.Checked == true && calNotReturnedFrom.Text != "") { var petientsList = petients.ToList(); var returnedFinancialList = financials.Where(o => DbFunctions.TruncateTime(o.TimeVisitStarts) >= calNotReturnedFrom.Date).ToList(); if (returnedFinancialList.Count() != 0) { foreach (var item in returnedFinancialList) { petientsList.RemoveAll(o => o.Id == item.Connectors.First().PetientId); } } petients = petientsList.AsQueryable(); } else { financials = financials.Where(o => o.Is_Petient_Canceled != true); } //Temporarily make list because cannot join in memory data and in database data var connectorList = connectors.ToList(); var petientList = petients.ToList(); var financialList = financials.ToList(); //Joining Petient-Connection var firstJoin = petientList.Join(connectorList, oOtter => oOtter.Id, oInner => oInner.PetientId, (petient, connector) => new { petient, connector }); //Joining Financial-firstJoin var grvStateDataSource = financialList.Join(firstJoin, oOtter => oOtter.Id, oInner => oInner.connector.FinancialId, (financial, prevJoin) => new { Id = financial.Id, First_Name = prevJoin.petient.First_Name, Last_Name = prevJoin.petient.Last_Name, Mobile = prevJoin.petient.Mobile, EmployeeId = prevJoin.connector.EmployeeId, Petient_Id = prevJoin.petient.Id, TimeVisitStarts = financial.TimeVisitStarts, TimeVisitEnds = financial.TimeVisitEnds, Money_To_Pay = financial.Money_To_Pay, Money_Changed = financial.Money_Changed, Money_Paid_Cash = financial.Money_Paid_Cash, Money_Paid_Card = financial.Money_Paid_Card, Balance = financial.Balance, POS_Name = financial.POS_Name, Description = financial.Description, Is_Petient_Returned = financial.Is_Petient_Returned, Is_Money_Paid = financial.Is_Money_Paid, Is_Petient_Visited = financial.Is_Petient_Visited, Is_Petient_Canceled = financial.Is_Petient_Canceled, Operator_Unit_Value = financial.Operator_Unit_Value }).GroupBy(o => o.Id).Select(o => o.FirstOrDefault()) .OrderBy(o => o.TimeVisitStarts).ToList(); //Sometimes there are two rows per recored on gridview. Because of the Tech, Doctor pairs. //Data binding grvState.DataSource = grvStateDataSource; grvState.DataBind(); //TODO: Cache the datasource and make it only relate to btnSearch. var cost = grvStateDataSource.Select(o => o.Money_To_Pay).ToList(); lblCost.Text = sum(cost).ToString(); var changed = grvStateDataSource.Select(o => o.Money_Changed).ToList(); lblChangedCost.Text = sum(changed).ToString(); var cash = grvStateDataSource.Select(o => o.Money_Paid_Cash).ToList(); lblPaidCash.Text = sum(cash).ToString(); var card = grvStateDataSource.Select(o => o.Money_Paid_Card).ToList(); lblPaidCard.Text = sum(card).ToString(); var balance = grvStateDataSource.GroupBy(o => o.Petient_Id).Select( o => o.LastOrDefault()) .Select(o => o.Balance).ToList(); lblBalance.Text = sum(balance).ToString(); lblStandardShuts.Text = standardShuts.ToString(); lblOperatorShuts.Text = operatorShuts.ToString(); } }
protected void grvState_RowUpdating(object sender, GridViewUpdateEventArgs e) { using (Medical_Clinic_Entities mc = new Medical_Clinic_Entities()) { var row = grvState.Rows[e.RowIndex]; var id = grvState.DataKeys[e.RowIndex].Value; var visitingFile = mc.Petient_Visiting_Financials.Where(o => o.Id == (long)id).First(); var petientId = Guid.Parse(((Label)row.FindControl("lblPetientId")).Text); if (visitingFile.Connectors.First().BSI__Employee_Service_Set == null) { visitingFile.Money_To_Pay = int.Parse(((TextBox)row.FindControl("txtMoneyToPay")).Text); } var moneyChanged = ((TextBox)row.FindControl("txtMoneyChanged")).Text; visitingFile.Money_Changed = int.Parse(moneyChanged == "" ? "0" : moneyChanged); visitingFile.Money_Paid_Cash = int.Parse(((TextBox)row.FindControl("txtCashPaid")).Text); visitingFile.Money_Paid_Card = int.Parse(((TextBox)row.FindControl("txtCardPaid")).Text); visitingFile.POS_Name = ((DropDownList)row.FindControl("ddlPOS")).Text; visitingFile.Description = ((TextBox)row.FindControl("txtDescription")).Text; var txtOperatorUnitValue = (TextBox)row.FindControl("txtOperatorUnitValue"); if (txtOperatorUnitValue.Visible == true) { if(txtOperatorUnitValue.Text != "") { visitingFile.Operator_Unit_Value = short.Parse(txtOperatorUnitValue.Text); if (visitingFile.Connectors.First().BSI__Employee_Service_Set != null && ModelClass.GetUnitName((long?)id) != SharedClass.GetUnit(SharedClass.UnitType.Shut)) { var parentServiceStandardValue = ModelClass.GetParentServiceStandardValue((long?)id); if (parentServiceStandardValue.HasValue == true && parentServiceStandardValue.Value != 0) { visitingFile.Money_To_Pay = visitingFile.Money_To_Pay * visitingFile.Operator_Unit_Value.Value / parentServiceStandardValue.Value; } } } else { visitingFile.Operator_Unit_Value = null; } } else { visitingFile.Operator_Unit_Value = null; } int lastBalance = 0; var petientVisitingFiles = mc.Connectors.Where(o => o.PetientId == petientId && o.FinancialId != null && o.Petient_Visiting_Financials.TimeVisitStarts < visitingFile.TimeVisitStarts) .OrderByDescending(o => o.Petient_Visiting_Financials.TimeVisitStarts).ToList(); if (petientVisitingFiles.Count() != 0) { lastBalance = petientVisitingFiles.ElementAt(petientVisitingFiles.IndexOf(petientVisitingFiles.First())).Petient_Visiting_Financials.Balance; } visitingFile.Balance = lastBalance + (visitingFile.Money_To_Pay - (visitingFile.Money_Paid_Cash + visitingFile.Money_Paid_Card)); if (visitingFile.Money_Changed != null) { visitingFile.Balance = visitingFile.Balance + visitingFile.Money_Changed.Value; } mc.SaveChanges(); } grvState.EditIndex = -1; bindGridView(); }
protected string getUnitAndStandardValue(object id) { var services = ModelClass.GetServicesOfFinancial((long?)id); int sum = 0; var unitName = ModelClass.GetUnitName((long?)Eval("Id")); if (services != null && unitName != null) { foreach (var service in services) { if (service.Unit_Standard_Value.HasValue == true) { sum += service.Unit_Standard_Value.Value; } else { sum += 0; } } if (unitName == SharedClass.GetUnit(SharedClass.UnitType.Shut)) { standardShuts += sum; using (Medical_Clinic_Entities mc = new Medical_Clinic_Entities()) { var financialOperatorShuts = mc.Petient_Visiting_Financials.Where(o => o.Id == (long?)id).First().Operator_Unit_Value; operatorShuts += (financialOperatorShuts.HasValue == true) ? financialOperatorShuts.Value : 0; } } return sum.ToString(); } else { return ""; } }