public List <Unit_Dto> UnitLoadAllFromRemote(int customerNo)
        {
            log.LogEverything("Not Specified", t.GetMethodName() + " called");
            log.LogVariable("Not Specified", nameof(customerNo), customerNo);

            var             parsedData = JRaw.Parse(http.UnitLoadAllFromRemote());
            List <Unit_Dto> lst        = new List <Unit_Dto>();

            foreach (JToken item in parsedData)
            {
                int microtingUid = int.Parse(item["id"].ToString());
                int siteUId      = int.Parse(item["site_id"].ToString());

                bool otpEnabled = bool.Parse(item["otp_enabled"].ToString());
                int  otpCode    = 0;
                if (otpEnabled)
                {
                    otpCode = int.Parse(item["otp_code"].ToString());
                }

                DateTime?createdAt = DateTime.Parse(item["created_at"].ToString());
                DateTime?updatedAt = DateTime.Parse(item["updated_at"].ToString());
                Unit_Dto temp      = new Unit_Dto(microtingUid, customerNo, otpCode, siteUId, createdAt, updatedAt);
                lst.Add(temp);
            }
            return(lst);
        }
        public Tuple <Site_Dto, Unit_Dto> SiteCreate(string name)
        {
            log.LogEverything("Not Specified", t.GetMethodName() + " called");
            log.LogVariable("Not Specified", nameof(name), name);

            string response   = http.SiteCreate(name);
            var    parsedData = JRaw.Parse(response);

            int      unitId  = int.Parse(parsedData["unit_id"].ToString());
            int      otpCode = int.Parse(parsedData["otp_code"].ToString());
            Site_Dto siteDto = new Site_Dto(int.Parse(parsedData["id"].ToString()), parsedData["name"].ToString(), "", "", 0, 0, unitId, 0); // WorkerUid is set to 0, because it's used in this context.
            Unit_Dto unitDto = new Unit_Dto(unitId, 0, otpCode, siteDto.SiteId, DateTime.Parse(parsedData["created_at"].ToString()), DateTime.Parse(parsedData["updated_at"].ToString()));
            Tuple <Site_Dto, Unit_Dto> result = new Tuple <Site_Dto, Unit_Dto>(siteDto, unitDto);

            return(result);
        }
#pragma warning disable 1998
        public async Task Handle(UnitActivated message)
        {
            try
            {
                Unit_Dto unitDto = sqlController.UnitRead(int.Parse(message.MicrotringUUID));
                sqlController.UnitUpdate(unitDto.UnitUId, unitDto.CustomerNo, 0, unitDto.SiteUId);
                sqlController.NotificationUpdate(message.notificationUId, message.MicrotringUUID, Constants.WorkflowStates.Processed, "", "");

                log.LogStandard(t.GetMethodName("UnitActivatedHandler"), "Unit with id " + message.MicrotringUUID + " has been activated");

                Note_Dto note_Dto = new Note_Dto(message.notificationUId, message.MicrotringUUID, Constants.WorkflowStates.Processed);
                core.FireHandleSiteActivated(note_Dto);
            }
            catch (Exception ex)
            {
                sqlController.NotificationUpdate(message.notificationUId, message.MicrotringUUID, Constants.WorkflowStates.NotFound, ex.Message, ex.StackTrace.ToString());
                Note_Dto note_Dto = new Note_Dto(message.notificationUId, message.MicrotringUUID, Constants.WorkflowStates.NotFound);
                core.FireHandleNotificationNotFound(note_Dto);
            }
        }
        //public string RetractEforms()
        //{
        //    string reply = "";

        //    Communicator communicator = new Communicator(sqlController, log);
        //    if (communicator == null)
        //        return "Failed to create a communicator. Action canceled. Database maybe not configured correct";

        //    List<string> lstCaseMUIds = sqlController.UnitTest_FindAllActiveCases();
        //    foreach (string mUId in lstCaseMUIds)
        //    {
        //        try
        //        {
        //            var aCase = sqlController.CaseReadByMUId(mUId);
        //            if (aCase != null)
        //            {
        //                communicator.Delete(mUId, aCase.SiteUId);

        //                try
        //                {
        //                    sqlController.CaseDelete(mUId);
        //                }
        //                catch
        //                {
        //                    sqlController.CaseDeleteReversed(mUId);
        //                }
        //            }
        //        }
        //        catch (Exception ex)
        //        {
        //            reply += "EformDelete  :'" + mUId + "' failed, due to:" + ex.Message + Environment.NewLine;
        //        }
        //    }

        //    return reply.Trim();
        //}

        //public string RetractEntities()
        //{
        //    string reply = "";

        //    Communicator communicator = new Communicator(sqlController, log);
        //    if (communicator == null)
        //        return "Failed to create a communicator. Action canceled. Database maybe not configured correct";

        //    List<string> lstEntityMUIds = sqlController.UnitTest_EntitiesFindAllActive();
        //    foreach (string mUId in lstEntityMUIds)
        //    {
        //        try
        //        {
        //            string type = sqlController.EntityGroupDelete(mUId);
        //            if (type != null)
        //                communicator.EntityGroupDelete(type, mUId);
        //        }
        //        catch (Exception ex)
        //        {
        //            reply += "EntityDelete :'" + mUId + "' failed, due to:" + ex.Message + Environment.NewLine;
        //        }
        //    }

        //    return reply.Trim();
        //}

        //public string DbClearData()
        //{
        //    try
        //    {
        //        RetractEforms();

        //        sqlController.UnitTest_TruncateTable(typeof(cases).Name);
        //        sqlController.UnitTest_TruncateTable(typeof(case_versions).Name);
        //        //---
        //        sqlController.UnitTest_TruncateTable(typeof(check_list_sites).Name);
        //        sqlController.UnitTest_TruncateTable(typeof(check_list_site_versions).Name);
        //        //---
        //        sqlController.UnitTest_TruncateTable(typeof(check_list_values).Name);
        //        sqlController.UnitTest_TruncateTable(typeof(check_list_value_versions).Name);
        //        //---
        //        sqlController.UnitTest_TruncateTable(typeof(field_values).Name);
        //        sqlController.UnitTest_TruncateTable(typeof(field_value_versions).Name);
        //        //---
        //        sqlController.UnitTest_TruncateTable(typeof(uploaded_data).Name);
        //        sqlController.UnitTest_TruncateTable(typeof(uploaded_data_versions).Name);
        //        //---
        //        sqlController.UnitTest_TruncateTable(typeof(a_interaction_case_list_versions).Name);
        //        sqlController.UnitTest_TruncateTable(typeof(a_interaction_case_lists).Name);
        //        //---
        //        sqlController.UnitTest_TruncateTable(typeof(a_interaction_case_versions).Name);
        //        sqlController.UnitTest_TruncateTable(typeof(a_interaction_cases).Name);
        //        //---

        //        //---
        //        sqlController.UnitTest_TruncateTable(typeof(notifications).Name);

        //        return "";
        //    }
        //    catch (Exception ex)
        //    {
        //        return t.PrintException(t.GetMethodName() + " failed", ex);
        //    }
        //}

        //public string DbClearTemplat()
        //{
        //    try
        //    {
        //        RetractEntities();

        //        sqlController.UnitTest_TruncateTable(typeof(entity_groups).Name);
        //        sqlController.UnitTest_TruncateTable(typeof(entity_group_versions).Name);
        //        //---
        //        sqlController.UnitTest_TruncateTable(typeof(entity_items).Name);
        //        sqlController.UnitTest_TruncateTable(typeof(entity_item_versions).Name);
        //        //---
        //        sqlController.UnitTest_TruncateTable(typeof(fields).Name);
        //        sqlController.UnitTest_TruncateTable(typeof(field_versions).Name);
        //        //---
        //        sqlController.UnitTest_TruncateTable(typeof(check_lists).Name);
        //        sqlController.UnitTest_TruncateTable(typeof(check_list_versions).Name);

        //        return "";
        //    }
        //    catch (Exception ex)
        //    {
        //        return t.PrintException(t.GetMethodName() + " failed", ex);
        //    }
        //}

        //public string DbClear()
        //{
        //    string reply = "";

        //    Communicator communicator = new Communicator(sqlController, log);
        //    if (communicator == null)
        //        return "Failed to create a communicator. Action canceled. Database maybe not configured correct";

        //    reply += RetractEforms() + Environment.NewLine;
        //    reply += RetractEntities() + Environment.NewLine;
        //    reply += DbClearData() + Environment.NewLine;
        //    reply += DbClearTemplat() + Environment.NewLine;

        //    return reply.TrimEnd();
        //}

        public string DbSetup(string token)
        {
            try
            {
                sqlController = new SqlController(connectionString);

                if (token == null)
                {
                    token = sqlController.SettingRead(Settings.token);
                }

                //if (token.ToLower() == "unittest")
                //    return DbSetupUnitTest();

                sqlController.SettingUpdate(Settings.token, token);

                // configure db
                DbSettingsReloadRemote();

                //sqlController.UnitTest_TruncateTablesIfEmpty();

                Communicator communicator = new Communicator(sqlController, log);

                #region add site's data to db
                if (!bool.Parse(sqlController.SettingRead(Settings.knownSitesDone)))
                {
                    //sqlController.UnitTest_TruncateTable(typeof(sites).Name);
                    foreach (var item in communicator.SiteLoadAllFromRemote())
                    {
                        SiteName_Dto siteDto = sqlController.SiteRead(item.SiteUId);
                        if (siteDto == null)
                        {
                            sqlController.SiteCreate(item.SiteUId, item.SiteName);
                        }
                    }

                    //sqlController.UnitTest_TruncateTable(typeof(workers).Name);
                    foreach (var item in communicator.WorkerLoadAllFromRemote())
                    {
                        Worker_Dto workerDto = sqlController.WorkerRead(item.WorkerUId);
                        if (workerDto == null)
                        {
                            sqlController.WorkerCreate(item.WorkerUId, item.FirstName, item.LastName, item.Email);
                        }
                    }

                    //sqlController.UnitTest_TruncateTable(typeof(site_workers).Name);
                    foreach (var item in communicator.SiteWorkerLoadAllFromRemote())
                    {
                        Site_Worker_Dto siteWorkerDto = sqlController.SiteWorkerRead(item.MicrotingUId, null, null);
                        if (siteWorkerDto == null)
                        {
                            try
                            {
                                sqlController.SiteWorkerCreate(item.MicrotingUId, item.SiteUId, item.WorkerUId);
                            }
                            catch
                            {
                                // We do catch this because right now we a descripency at the API side.
                            }
                        }
                    }

                    int customerNo = communicator.OrganizationLoadAllFromRemote(token).CustomerNo;

                    //sqlController.UnitTest_TruncateTable(typeof(units).Name);
                    foreach (var item in communicator.UnitLoadAllFromRemote(customerNo))
                    {
                        Unit_Dto unitDto = sqlController.UnitRead(item.UnitUId);
                        if (unitDto == null)
                        {
                            try
                            {
                                sqlController.UnitCreate(item.UnitUId, item.CustomerNo, item.OtpCode, item.SiteUId);
                            }
                            catch
                            {
                                // We do catch this because right now we a descripency at the API side.
                            }
                        }
                    }
                    sqlController.SettingUpdate(Settings.knownSitesDone, "true");
                }
                #endregion

                sqlController.SettingUpdate(Settings.firstRunDone, "true");

                return("");
            }
            catch (Exception ex)
            {
                return(t.PrintException(t.GetMethodName() + " failed", ex));
            }
        }
Beispiel #5
0
        public string DbSetup(string token)
        {
            try
            {
                sqlController = new SqlController(connectionString);

                if (token == null)
                {
                    token = sqlController.SettingRead(Settings.token);
                }

                sqlController.SettingUpdate(Settings.token, token);

                // configure db
                DbSettingsReloadRemote();


                string       comAddressApi       = sqlController.SettingRead(Settings.comAddressApi);
                string       comAddressBasic     = sqlController.SettingRead(Settings.comAddressBasic);
                string       comOrganizationId   = sqlController.SettingRead(Settings.comOrganizationId);
                string       ComAddressPdfUpload = sqlController.SettingRead(Settings.comAddressPdfUpload);
                string       ComSpeechToText     = sqlController.SettingRead(Settings.comSpeechToText);
                Communicator communicator        = new Communicator(token, comAddressApi, comAddressBasic, comOrganizationId, ComAddressPdfUpload, log, ComSpeechToText);

                #region add site's data to db
                if (!bool.Parse(sqlController.SettingRead(Settings.knownSitesDone)))
                {
                    foreach (var item in communicator.SiteLoadAllFromRemote())
                    {
                        SiteName_Dto siteDto = sqlController.SiteRead(item.SiteUId);
                        if (siteDto == null)
                        {
                            sqlController.SiteCreate(item.SiteUId, item.SiteName);
                        }
                    }

                    foreach (var item in communicator.WorkerLoadAllFromRemote())
                    {
                        Worker_Dto workerDto = sqlController.WorkerRead(item.WorkerUId);
                        if (workerDto == null)
                        {
                            sqlController.WorkerCreate(item.WorkerUId, item.FirstName, item.LastName, item.Email);
                        }
                    }

                    foreach (var item in communicator.SiteWorkerLoadAllFromRemote())
                    {
                        Site_Worker_Dto siteWorkerDto = sqlController.SiteWorkerRead(item.MicrotingUId, null, null);
                        if (siteWorkerDto == null)
                        {
                            try
                            {
                                sqlController.SiteWorkerCreate(item.MicrotingUId, item.SiteUId, item.WorkerUId);
                            }
                            catch
                            {
                                // We do catch this because right now we a descripency at the API side.
                            }
                        }
                    }

                    int customerNo = communicator.OrganizationLoadAllFromRemote(token).CustomerNo;

                    foreach (var item in communicator.UnitLoadAllFromRemote(customerNo))
                    {
                        Unit_Dto unitDto = sqlController.UnitRead(item.UnitUId);
                        if (unitDto == null)
                        {
                            try
                            {
                                sqlController.UnitCreate(item.UnitUId, item.CustomerNo, item.OtpCode, item.SiteUId);
                            }
                            catch
                            {
                                // We do catch this because right now we a descripency at the API side.
                            }
                        }
                    }
                    sqlController.SettingUpdate(Settings.knownSitesDone, "true");
                }
                #endregion

                sqlController.SettingUpdate(Settings.firstRunDone, "true");

                return("");
            }
            catch (Exception ex)
            {
                return(t.PrintException(t.GetMethodName("AdminTools") + " failed", ex));
            }
        }