예제 #1
0
        public string GetClientDetails(string token)
        {
            if (context.CheckIfTokenValid(token) == 10001)
            {
                var importId = 0;
                using (var context = new OrgSys2017DataContext())
                {
                    importId = context.GetClientImportID(token);
                }

                using (var command = OrgsysdbConn.CreateCommand())
                {
                    OrgsysdbConn.Open();
                    command.CommandText = "PORTALORG_GetClientDetails";
                    command.CommandType = CommandType.StoredProcedure;
                    command.Parameters.AddWithValue("@importId", importId);

                    var da = new MySqlDataAdapter(command);
                    var dt = new DataTable();
                    da.Fill(dt);
                    OrgsysdbConn.Close();

                    return(JsonConvert.SerializeObject(dt, Formatting.None));
                }
            }
            else
            {
                return("");
            }
        }
        public string SavePortalForm([FromBody] DataList list, string token)
        {
            MySqlTransaction transaction = null;
            var insertHistory            = new List <PKInfo>();
            var txIsCommitted            = false;
            var claimIndex = 1;                                                                                       //default; this is updated if employee record exists

            string[] os_claimsEncryptedFields = { "EmployeeLast", "DateBirth", "Phone1", "Phone2", "Phone3", "SIN" }; //these os_claims fields are to be encrypted
            string[] blankRecordTables        = { "OSI_New.os_claims_absences", "OSI_New.os_claimsextended", "OSI_New.os_employees_additional" };
            int      importId;
            int      claimId = 0;

            using (var context = new OrgSys2017DataContext())
            {
                //userId = context.GetUserIDSession(token).SingleOrDefault().UserID;
                //clientId = context.GetClientIDBySession(token).SingleOrDefault().ClientID;
                importId = context.GetClientImportID(token);
            }

            if (list.contrlData != null)
            {
                using (var connection = new MySqlConnection(ConfigurationManager.ConnectionStrings["OldOrgsysConnectionString"].ConnectionString))
                {
                    try
                    {
                        connection.Open();
                        transaction   = connection.BeginTransaction();
                        orgsysService = new OldOrgsysServices(connection, transaction);
                        object managerId    = null;
                        object supervisorId = null;
                        object referralId   = null;

                        foreach (var item in list.contrlData)
                        {
                            if (string.IsNullOrEmpty(item.TableName))
                            {
                                continue;
                            }
                            if (item.Columns != null)
                            {
                                var tableRows = item.Columns.GroupBy(x => x.Row).OrderBy(rowNu => rowNu.Key);   //may have multiple rows

                                foreach (var row in tableRows)
                                {
                                    var query = new PortalQuery(item.TableName);

                                    foreach (var col in row)
                                    {
                                        object parameterValue = col.Value;
                                        //some values have to be modified before insert
                                        if (item.TableName == "OSI_New.os_employees" & (Array.IndexOf(os_claimsEncryptedFields, col.ColumnName) >= 0))
                                        {
                                            parameterValue = orgsysService.EncryptString(col.Value);
                                        }

                                        query.AddParameter(col.ColumnName, parameterValue);
                                    }

                                    //find fk reference and add as parameter if present
                                    var res = insertHistory.Find(x => x.PkTable == item.PKTable);
                                    if (res != null)
                                    {
                                        query.AddParameter(item.FKName, res.PkValue);
                                    }

                                    //orgsys pandering
                                    if (item.TableName == "OSI_New.os_employees")
                                    {
                                        //ColumnType is used here to differentiate between types of employees  (manager, supervisor, employee)
                                        var employeeType = row.FirstOrDefault().ColumnType;

                                        //these will become parameters for checking if an employee exists
                                        string employeeDOB   = null;
                                        var    employeeFirst = item.Columns.FirstOrDefault(c => c.ColumnName == "EmployeeFirst" & c.ColumnType == employeeType).Value;
                                        var    employeeLast  = item.Columns.FirstOrDefault(c => c.ColumnName == "EmployeeLast" & c.ColumnType == employeeType).Value;

                                        var employeeDOBColumn = item.Columns.FirstOrDefault(c => c.ColumnName == "DateBirth" & c.ColumnType == employeeType);
                                        if (employeeDOBColumn != null)
                                        {
                                            employeeDOB = employeeDOBColumn.Value;
                                        }

                                        var employeeId    = orgsysService.GetEmployeeID(importId, employeeFirst, employeeLast, employeeDOB);
                                        var isNewEmployee = employeeId == 0;

                                        switch (employeeType)
                                        {
                                        case "Manager":
                                            if (isNewEmployee)
                                            {
                                                query.AddParameter("IsManager", -1);
                                                query.AddParameter("CompanyID", importId);

                                                orgsysService.ExecuteInsert(query);
                                                managerId = orgsysService.GetLastInsertID();
                                            }
                                            else
                                            {
                                                managerId = employeeId;
                                            }
                                            continue;     //a new record has been inserted or one already exists; go to next iteration

                                        case "Supervisor":
                                            if (isNewEmployee)
                                            {
                                                query.AddParameter("IsSupervisor", -1);
                                                query.AddParameter("CompanyID", importId);

                                                orgsysService.ExecuteInsert(query);
                                                supervisorId = orgsysService.GetLastInsertID();
                                            }
                                            else
                                            {
                                                supervisorId = employeeId;
                                            }
                                            continue;

                                        case "SubBy":
                                            if (isNewEmployee)
                                            {
                                                query.AddParameter("CompanyID", importId);

                                                orgsysService.ExecuteInsert(query);
                                                referralId = orgsysService.GetLastInsertID();
                                            }
                                            else
                                            {
                                                referralId = employeeId;
                                            }
                                            continue;

                                        default:        //handle as employee
                                            if (!isNewEmployee)
                                            {
                                                insertHistory.Add(new PKInfo("OSI_New.os_employees", employeeId));
                                                claimIndex = orgsysService.GetClaimIndexByEmployeeID(employeeId);
                                                continue;
                                            }
                                            else
                                            {
                                                query.AddParameter("CompanyID", importId);
                                            }
                                            break;
                                        }
                                    }

                                    if (item.TableName == "OSI_New.os_employees_additional")
                                    {
                                        //os_employees_additional has a column for os_claims.id and os_employees.id
                                        var os_employeesDetail = insertHistory.Find(x => x.PkTable == "OSI_New.os_employees");
                                        if (os_employeesDetail != null)
                                        {
                                            query.AddParameter("os_employeesID", os_employeesDetail.PkValue);
                                        }
                                    }

                                    if (item.TableName == "OSI_New.os_claims")
                                    {
                                        query.AddParameter("ClaimStatusID", 1);
                                        query.AddParameter("ReasonClosedID", 9);
                                        query.AddParameter("ClaimIndex", claimIndex);
                                        query.AddParameter("ManagerID", managerId);
                                        query.AddParameter("SupervisorID", supervisorId);
                                        query.AddParameter("ReferralSubmittedBy", referralId);

                                        orgsysService.ExecuteInsert(query);
                                        claimId = orgsysService.GetLastInsertID();  //need claimId for link with any documents
                                        insertHistory.Add(new PKInfo(item.TableName, claimId));
                                        continue;
                                    }

                                    if (item.TableName == "OSI_New.os_employees_schedule")
                                    {
                                        query.AddParameter("sched_order", row.Key);
                                    }

                                    if (item.TableName == "OSI_New.os_claims_healthsafety")
                                    {
                                        query.ConcatenateParameters("witnessesdescr", ",");
                                    }

                                    orgsysService.ExecuteInsert(query);
                                    var id = orgsysService.GetLastInsertID();

                                    insertHistory.Add(new PKInfo(item.TableName, id));
                                }
                            }
                        }

                        //these tables require that at minimum, an empty record be inserted that references the claim
                        foreach (var table in blankRecordTables)
                        {
                            if (insertHistory.Where(x => x.PkTable == table).Count() == 0)
                            {
                                var query = new PortalQuery(table);
                                query.AddParameter("ClaimID", claimId);
                                orgsysService.ExecuteInsert(query);
                            }
                        }

                        transaction.Commit();
                        txIsCommitted = true;
                    }
                    catch (Exception e)
                    {
                        ExceptionLog.LogException(e);

                        try
                        {
                            transaction.Rollback();
                        }
                        catch (MySqlException rbe)
                        {
                            ExceptionLog.LogException(rbe);
                        }
                    }
                }
            }

            return(JsonConvert.SerializeObject(new { Submitted = txIsCommitted, ClaimID = claimId }));
        }
예제 #3
0
        public int GetClientImportID(string Token)
        {
            int result = (int)context.GetClientImportID(Token);

            return(result);
        }