Exemplo n.º 1
0
        private void HousingDmTxbx_LostFocus(object sender, RoutedEventArgs e)
        {
            string table = "";

            if (ConfigurationManager.AppSettings["HousingConnectorAssy"] == "true")
            {
                table = "housing_connector_assy";
            }
            else
            {
                table = "potting";
            }

            if (HousingDmTxbx.Text.Length > 0)
            {
                var preCheck = new DatabaseHelper();
                if (preCheck.CountRowInDB(table, "housing_dm", HousingDmTxbx.Text) == 0)
                {
                    if (ConfigurationManager.AppSettings["PreCheckMode"] == "hard")
                    {
                        CallMessageForm("Előző munkafolyamaton nem szerepelt a termék!");
                    }
                    else
                    {
                        ErrorLog.Create(table, "housing_dm", HousingDmTxbx.Text, MethodBase.GetCurrentMethod().Name.ToString(), "Előző munkafolyamaton nem szerepelt a termék!", this.GetType().Name.ToString());
                    }
                }
                StartedOn = DateTime.Now;
            }
        }
Exemplo n.º 2
0
        private void FbDmTxbx_LostFocus(object sender, RoutedEventArgs e)
        {
            DmValidator();
            if (ConfigurationManager.AppSettings["FbAcdcAssy"] == "true" && FbDmTxbx.Text.Length > 0)
            {
                var preCheck = new DatabaseHelper();
                if (preCheck.CountRowInDB("fb_acdc_assy", "fb_dm", FbDmTxbx.Text) == 0)
                {
                    if (ConfigurationManager.AppSettings["PreCheckMode"] == "hard")
                    {
                        CallMessageForm("Előző munkafolyamaton nem szerepelt a termék!");
                    }
                    else
                    {
                        ErrorLog.Create("fb_acdc_assy", "fb_dm", FbDmTxbx.Text, MethodBase.GetCurrentMethod().Name.ToString(), "Előző munkafolyamaton nem szerepelt a termék!", this.GetType().Name.ToString());
                    }
                }
                else
                {
                    WebCamLaunchClick(sender, e);
                }
            }

            StartedOn = DateTime.Now;
        }
Exemplo n.º 3
0
            private async Task <User> UpdateUserInfo(List <Track> tracks, User currentUser, UserInfoDB userInfo, CancellationToken token)
            {
                if (currentUser == null)
                {
                    currentUser = Student.CreateUser(
                        userInfo.NomeCompletoAluno,
                        userInfo.EmailAluno.Trim(),
                        userInfo.EmailAluno.Trim(),
                        userInfo.Matricula,
                        userInfo.CPFAluno,
                        "", "", "",
                        userInfo.Telefone1Aluno,
                        "", "Student"
                        ).Data;

                    currentUser.FirstAccess = false;
                    currentUser             = SetUserData(currentUser, userInfo);
                    currentUser             = await SetUserTrack(tracks, currentUser, userInfo, token);

                    var result = await _userManager.CreateAsync(currentUser, "Proseek2018!");

                    if (!result.Succeeded)
                    {
                        await _db.ErrorLogCollection.InsertOneAsync(
                            ErrorLog.Create(
                                ErrorLogTypeEnum.DatabaseImport,
                                "CreateNewUser", result.Errors.ToJson()
                                ).Data, cancellationToken : token
                            );
                    }
                }
                else
                {
                    currentUser = SetUserData(currentUser, userInfo);
                    currentUser = await SetUserTrack(tracks, currentUser, userInfo, token);

                    await _db.UserCollection.ReplaceOneAsync(
                        u => u.Id == currentUser.Id, currentUser,
                        cancellationToken : token
                        );
                }

                if (currentUser.TracksInfo != null && currentUser.TracksInfo.Count > 0)
                {
                    var tracksProgress = new List <UserTrackProgress>();
                    foreach (var track in currentUser.TracksInfo)
                    {
                        tracksProgress.Add(
                            new UserTrackProgress(track.Id, currentUser.Id, 0, 0)
                            );
                    }

                    await _db.UserTrackProgressCollection.InsertManyAsync(
                        tracksProgress, cancellationToken : token
                        );
                }

                return(currentUser);
            }
Exemplo n.º 4
0
 private async Task LogProductError(string TagLog, UserInfoDB userInfo, ObjectId userId, CancellationToken token)
 {
     await _db.ErrorLogCollection.InsertOneAsync(
         ErrorLog.Create(
             ErrorLogTypeEnum.DatabaseImport,
             TagLog, new {
         NomeProduto = userInfo.NomeModulo,
         IdProduto = userInfo.IdModuloEvento,
         UserId = userId
     }.ToJson()
             ).Data, cancellationToken : token
         );
 }
Exemplo n.º 5
0
 private async Task LogPurchaseHistoryError(UserInfoDB userInfo, ObjectId userId, CancellationToken token)
 {
     await _db.ErrorLogCollection.InsertOneAsync(
         ErrorLog.Create(
             ErrorLogTypeEnum.DatabaseImport,
             "TrackDoesntExist", new {
         DataCompra = userInfo.CompraDataPgto,
         IdProduto = userInfo.CompraIdObj,
         UserId = userId
     }.ToJson()
             ).Data, cancellationToken : token
         );
 }
Exemplo n.º 6
0
            private async Task <bool> CreateErrorLog(
                string tag, string content, CancellationToken token
                )
            {
                var error = ErrorLog.Create(
                    ErrorLogTypeEnum.EcommerceIntegration,
                    tag, content
                    ).Data;

                await _db.ErrorLogCollection.InsertOneAsync(
                    error, cancellationToken : token
                    );

                return(true);
            }
Exemplo n.º 7
0
 private void MbDmTxbx_LostFocus(object sender, RoutedEventArgs e)
 {
     if (MbDmTxbx.Text.Length > 0)
     {
         var preCheck = new DatabaseHelper();
         if (preCheck.CountRowInDB("mb_dsp_assy", "mb_dm", MbDmTxbx.Text) == 0)
         {
             if (ConfigurationManager.AppSettings["PreCheckMode"] == "hard")
             {
                 CallMessageForm("Előző munkafolyamaton nem szerepelt a Mainboard!");
             }
             else
             {
                 ErrorLog.Create("mb_dsp_assy", "mb_dm", MbDmTxbx.Text, MethodBase.GetCurrentMethod().Name.ToString(), "Előző munkafolyamaton nem szerepelt a Mainboard!", this.GetType().Name.ToString());
             }
         }
     }
 }
 private void housingDmTxbx_LostFocus(object sender, RoutedEventArgs e)
 {
     if (housingDmTxbx.Text.Length > 0)
     {
         var preCheck = new DatabaseHelper();
         if (preCheck.CountRowInDB("calibration", "housing_dm", housingDmTxbx.Text) == 0)
         {
             if (ConfigurationManager.AppSettings["PreCheckMode"] == "hard")
             {
                 CallMessageForm("Előző munkafolyamaton nem szerepelt a termék!");
             }
             else
             {
                 ErrorLog.Create("final_assy_two", "housing_dm", housingDmTxbx.Text, MethodBase.GetCurrentMethod().Name.ToString(), "Előző munkafolyamaton nem szerepelt a termék!", this.GetType().Name.ToString());
             }
         }
         StartedOn = DateTime.Now;
     }
 }
Exemplo n.º 9
0
            private async Task <bool> UpdateCurrentModule(ObjectId userId, ModuleDraft draft, CancellationToken token)
            {
                var module = await _db.ModuleCollection.AsQueryable()
                             .Where(mod => mod.Id == draft.ModuleId)
                             .FirstOrDefaultAsync();

                if (module == null)
                {
                    return(false);
                }

                string config = _configuration[$"EcommerceIntegration:Active"];

                if (!draft.EcommerceId.HasValue && draft.CreateInEcommerce && config == "True")
                {
                    var response = await CreateEcommerceProduct(module);

                    string content = await response.Content.ReadAsStringAsync();

                    if (response.StatusCode == HttpStatusCode.Created)
                    {
                        var parsed = JObject.Parse(content);
                        module.EcommerceId = (long)parsed["product"]["id"];
                    }
                    else
                    {
                        var error = ErrorLog.Create(
                            ErrorLogTypeEnum.EcommerceIntegration,
                            "create-module", content
                            ).Data;

                        await _db.ErrorLogCollection.InsertOneAsync(
                            error, cancellationToken : token
                            );
                    }
                }

                var serializedModuleOldValues = JsonConvert.SerializeObject(new List <Module>
                {
                    module
                });

                module.Title              = draft.Title;
                module.Excerpt            = draft.Excerpt;
                module.ImageUrl           = draft.ImageUrl;
                module.Published          = draft.Published;
                module.InstructorId       = draft.InstructorId;
                module.ExtraInstructorIds = draft.ExtraInstructorIds;
                module.Instructor         = draft.Instructor;
                module.InstructorMiniBio  = draft.InstructorMiniBio;
                module.InstructorImageUrl = draft.InstructorImageUrl;
                module.Duration           = draft.Duration;
                module.VideoUrl           = draft.VideoUrl;
                module.VideoDuration      = draft.VideoDuration;
                module.CertificateUrl     = draft.CertificateUrl;
                module.StoreUrl           = draft.StoreUrl;
                module.EcommerceUrl       = draft.EcommerceUrl;
                module.Tags             = draft.Tags;
                module.TutorsIds        = draft.TutorsIds;
                module.Subjects         = draft.Subjects;
                module.Requirements     = draft.Requirements;
                module.SupportMaterials = draft.SupportMaterials;
                module.EcommerceId      = draft.EcommerceId;
                module.ModuleGradeType  = draft.ModuleGradeType;
                var listEcomerce = new List <EcommerceModule>();

                if (draft.EcommerceProducts != null && draft.EcommerceProducts.Count > 0)
                {
                    for (int i = 0; i < draft.EcommerceProducts.Count; i++)
                    {
                        var currentDraftProduct = draft.EcommerceProducts[i];
                        listEcomerce.Add(new EcommerceModule()
                        {
                            EcommerceId      = currentDraftProduct.EcommerceId,
                            UsersAmount      = currentDraftProduct.UsersAmount,
                            DisableEcommerce = currentDraftProduct.DisableEcommerce,
                            Price            = currentDraftProduct.Price,
                            DisableFreeTrial = currentDraftProduct.DisableFreeTrial,
                            LinkEcommerce    = currentDraftProduct.LinkEcommerce,
                            LinkProduct      = currentDraftProduct.LinkProduct,
                            Subject          = currentDraftProduct.Subject,
                            Hours            = currentDraftProduct.Hours
                        });
                    }
                }
                module.EcommerceProducts = listEcomerce;

                await _db.ModuleCollection.ReplaceOneAsync(t =>
                                                           t.Id == module.Id, module,
                                                           cancellationToken : token
                                                           );

                var newDraftList = new List <Module>
                {
                    module
                };

                var auditLog = AuditLog.Create(userId, module.Id, module.GetType().ToString(),
                                               JsonConvert.SerializeObject(newDraftList), EntityAction.Update, serializedModuleOldValues);
                await _db.AuditLogCollection.InsertOneAsync(auditLog);

                return(true);
            }
Exemplo n.º 10
0
            private async Task <bool> UpdateCurrentEvent(EventDraft draft, CancellationToken token)
            {
                var dbEvent = await _db.EventCollection.AsQueryable()
                              .Where(mod => mod.Id == draft.EventId)
                              .FirstOrDefaultAsync();

                if (dbEvent == null)
                {
                    return(false);
                }

                string config = _configuration[$"EcommerceIntegration:Active"];

                dbEvent.EcommerceId = draft.EcommerceId;

                if (!draft.EcommerceId.HasValue && draft.CreateInEcommerce && config == "True")
                {
                    var response = await CreateEcommerceProduct(dbEvent);

                    string content = await response.Content.ReadAsStringAsync();

                    if (response.StatusCode == HttpStatusCode.Created)
                    {
                        var parsed = JObject.Parse(content);
                        dbEvent.EcommerceId = (long)parsed["product"]["id"];
                    }
                    else
                    {
                        var error = ErrorLog.Create(
                            ErrorLogTypeEnum.EcommerceIntegration,
                            "create-module", content
                            ).Data;

                        await _db.ErrorLogCollection.InsertOneAsync(
                            error, cancellationToken : token
                            );
                    }
                }

                dbEvent.Title              = draft.Title;
                dbEvent.Excerpt            = draft.Excerpt;
                dbEvent.ImageUrl           = draft.ImageUrl;
                dbEvent.InstructorId       = draft.InstructorId;
                dbEvent.Instructor         = draft.Instructor;
                dbEvent.InstructorMiniBio  = draft.InstructorMiniBio;
                dbEvent.InstructorImageUrl = draft.InstructorImageUrl;
                dbEvent.Tags                 = draft.Tags;
                dbEvent.VideoUrl             = draft.VideoUrl;
                dbEvent.VideoDuration        = draft.VideoDuration;
                dbEvent.Duration             = draft.Duration;
                dbEvent.PrepQuiz             = draft.PrepQuiz;
                dbEvent.PrepQuizQuestionList = draft.PrepQuizQuestionList;
                dbEvent.CertificateUrl       = draft.CertificateUrl;
                dbEvent.TutorsIds            = draft.TutorsIds;
                dbEvent.StoreUrl             = draft.StoreUrl;
                dbEvent.Schedules            = draft.Schedules;
                dbEvent.Requirements         = draft.Requirements;
                dbEvent.SupportMaterials     = draft.SupportMaterials;

                await _db.EventCollection.ReplaceOneAsync(t =>
                                                          t.Id == dbEvent.Id, dbEvent,
                                                          cancellationToken : token
                                                          );

                return(true);
            }
Exemplo n.º 11
0
        private void HousingDmTxbx_LostFocus(object sender, RoutedEventArgs e)
        {
            if (HousingDmTxbx.Text.Length > 0 && BeforeHousingDm != HousingDmTxbx.Text)
            {
                var preCheck = new DatabaseHelper();
                if (preCheck.CountRowInDB("eol", "housing_dm", HousingDmTxbx.Text) == 0)
                {
                    if (ConfigurationManager.AppSettings["PreCheckMode"] == "hard")
                    {
                        CallMessageForm("Előző munkafolyamaton nem szerepelt a termék!");
                    }
                    else
                    {
                        ErrorLog.Create("eol", "housing_dm", HousingDmTxbx.Text, MethodBase.GetCurrentMethod().Name.ToString(), "Előző munkafolyamaton nem szerepelt a termék!", this.GetType().Name.ToString());
                    }
                }
                else
                {
                    //Precheck passed
                    //Check in calibration

                    if (new DatabaseHelper().CountRowInDB("calibration", "housing_dm", HousingDmTxbx.Text) > 0)
                    {
                        //Print DMC
                        using (NpgsqlConnection conn = new NpgsqlConnection(ConfigurationManager.ConnectionStrings["ltctrace.dbconnectionstring"].ConnectionString))
                        {
                            conn.Open();
                            DateTime date = Convert.ToDateTime(new NpgsqlCommand("SELECT saved_on FROM calibration where housing_dm = '" + HousingDmTxbx.Text + "' order by saved_on desc limit 1", conn).ExecuteScalar());

                            dmc35first  = String.Empty;
                            dmc35second = String.Empty;

                            string first  = String.Empty;
                            string second = "T58";

                            //Build up the upper text
                            first = date.Year.ToString().Remove(0, 2); //YY
                            if (date.Month < 10)
                            {
                                first += "0" + date.Month.ToString(); //MM
                            }
                            else
                            {
                                first += date.Month.ToString(); //MM
                            }
                            if (date.Day < 10)
                            {
                                first += "0" + date.Day.ToString(); //DD
                            }
                            else
                            {
                                first += date.Day.ToString(); //DD
                            }
                            //Build up the bottom text
                            second += date.Year.ToString().Remove(0, 2);                                    // YY
                            second += Math.Ceiling(Convert.ToDouble(date.DayOfYear) / 7).ToString();        // WW
                            second += ((int)date.DayOfWeek).ToString();                                     // D
                            second += "0" + HousingDmTxbx.Text.Substring(HousingDmTxbx.Text.Length - 4, 4); // LTC housing number

                            if (HousingDmTxbx.Text.Contains("P514LTC"))
                            {
                                //P514
                                string s = @"CT~~CD,~CC^~CT~^XA~TA000~JSN^LT0^MNW^MTT^PON^PMN^LH0,0^JMA^PR2,2~SD22^JUS^LRN^CI0^XZ^XA^MMT^PW406^LL0280^LS0^FO0,64^GFA,01024,01024,00016,:Z64:eJzt0TsKwzAMBmAFD96UC7jJNRQakit5zFT7BD1BD9LRJ8gZdILg0YNp6jiPLWsLpf8g+BASCAH889vpo3ESQFhC4NW+BJC2xeKwBemSfTKBHrK7w1Q7KLlDETZfHCD3KJ4nbhkqfb3Lx7I/6IEY1GKVbXx2M+5mrYGoGRHzvHHZNG3WYHzsA03la/Mcool0q+cTcyqKOiVXF04BI3Uk7HLv7urMwmLhJGFqfPJT38gbPd9cbQ==:426D^FO0,96^GFA,01024,01024,00016,:Z64:eJzt0bFuwyAQBuCzGG6DtcPJvAaVaP1KZGsmt8rgzXklLAY2P0EHIg9d6eYBhULs9BEqReq/fQNw/wHwn8dKZ1e0uonilE+2ekoy9piky0Ms7t1VxjykbsnntdiwUb8t51ZF5Gqzep5Gboygp2rE4rmYE9Xzu8G0N+cB6TB5AkObPcrvySeI+uaLR3FZ3NoE1eo64BeW931iQYm0mUzviVmDu5V6mTm+G/Z5dzNzAQbqfWG3vHsp87qRv0KgOv/BjfpY+mgIrfrti6mLQdT+3UcSIbO13y1h21cxs3/2S4+SHx58ci8=:EA23^FO0,160^GFA,01024,01024,00016,:Z64:eJztzzEKwjAYBeBIh271AgGv8cBAruRoF6l4DQ/iGAiYrb3CHxwcjVuHakzRmrRzxz744X3DG37GloyDYm4D96rUbuv44IfyppWtGOytN50Eess38LS64SKabvrKIRIflQDfDftg3Y1tJm7OKFzimqOgaJ1Y7MmaWiD/WbZkfdMhV19vLkQvE70GUalrZCp+vQo9q/7MeueJTxP70GUy92xkdggn2JK58wG/ZWB8:83D1^FO0,128^GFA,00768,00768,00012,:Z64:eJztz7ENAjEMBdCPUrg5JQt84TVSRGKlTMIECFZhlIxw5RVRwFzuLgUjgJs8WZbzDfzru05Pba5odQVw5rDoKyzmok3rboKJck+AzEQ8091ozuZpOKM7xNXiI+Cj1oy+Z3OTGSBHn+zzV5vXOvZcmnkajr7b3iNDFiJt2bKMzB/bLetfxT2OG3+33rFEP+8=:3407^FO0,0^GFA,03072,03072,00032,:Z64:eJzt1E1uwyAQBWAQlVClStygvkgljoarLHotH8W9gZcsEK9v8A8GJc2+9SSxbD6Ezcw4Sl1xxX+OgLye4Bh6aR1T52+dL51/dB47T52n1vUTN73nX310T9zgd9dPnKJzcR5dKo6Rp+PhjjmEsjx6jB6LZc4wzId7ueasWTHbvHDcM3z1wBzKrKiBmT6Ih+lwyZHMSobV8PLNaqubPL+WHO0e6eHsJhvcIKvcsk2uuFxj3PNnsi6us402cX/Q1bm25chIVbDRFJfP9+7JRi6z+0R/F5/2+sXNkwo2b/mFWpcv/eUW5SdwPHwxReL67HP1GzcmPmCvl/Tv5gD3Cbk/E1I9qeqfvBvdnVwqefjIp6X7h+4h+w8P3RVHuuelr5DFp4fOaqS1GtXX/BVfjHi+5xxlJvU93+qn4eLquvG1/lrqn8r66Jyds/VPmfGKr8ab/uMvos1P7V/OZI/HkumTH/3PmQs9IDTu5c1h0RfO5FkM2Td+fv8mFeKQmE9VQ5e/CHnRpQGH2S7qiiuu+OvxA2X231k=:1F51^FO320,32^GFA,02304,02304,00012,:Z64:eJzt1L1KA0EQB/BdVzyrO0uLkPgIARvRkDyMLxBJo01uwV58A19lwxWW8Q1ykCKlKym8QMg4S2Z2R8HKEFK4cPhT9+v+s7dK/bf9t2N8Tskn+JyTDT5dsrbvdsgDJlDX7Ntp6dgDACscF2irPDrH37hl6jravGySZz76CN6i9d1z8s1Zcls4/+Xvl8JynvQqSrv4isrYbnRm79P+7Tq6ZdOerybpfYcih9qtHBvBi2nswIvJnHfWAMAJ17vwobcL+llaldEJ0liJATlDl+QCrAZyB6xhDxpluHh4sDMudolD+FBi0Yuapsf/d5wwDdUNTkU2wTTU+PBl2L9bzKl/mvcg9hb2HA1p/yGqoiFjThkfaJmJzCpkyDYiW4WOAWEKOn3BB9zE0c4gfdfy7ipdvN8w0JgbFiO+YoYdeHBhleqTw2Hgy26AfQp2Ha6UrR988gi8N7TYEhqvyXNYe71dWM9nfU+XiK6mT8mv06X15GoB9fZyMdUEwLMdbBryoxuve+x63LTY2F26zWNh4fM4j2Hrymnug1ZNy0evW7xnpzY9Cg4NK/IS/UHvOELPyXjZmgVl0sPxn+SQa8nZqpRzyLxHlrWQNZK1kzX9Vmt5BlS6PvfXvgAWmxIX:FD95^BY1,3,62^FT17,271^B3N,N,,N,N^FD" + second + @"^FS^FO16,76^GB67,0,5^FS^FT126,201^A0N,28,24^FH\^FD" + second + @"^FS^FT126,171^A0N,28,24^FH\^FD" + first + @"^FS^PQ2,0,1,Y^XZ";
                                RawPrinterHelper.SendStringToPrinter(printerName, s);

                                Resultlbl.Text = "P514 címke nyomtatása megtörtént.";
                            }
                            else if (HousingDmTxbx.Text.Contains("35LTC"))
                            {
                                //3.5

                                //Do nothing, wait for third input
                                SetDefaultValue(ThreeFiveRightTxt, e);
                                ThreeFivePanel.Visibility = Visibility.Visible;
                                Resultlbl.Text            = "";

                                dmc35first  = first;
                                dmc35second = second;
                            }
                            else
                            {
                                //2.5
                                string s = @"CT~~CD,~CC^~CT~^XA~TA000~JSN^LT0^MNW^MTT^PON^PMN^LH0,0^JMA^PR2,2~SD22^JUS^LRN^CI0^XZ^XA^MMT^PW406^LL0280^LS0^FO0,64^GFA,01024,01024,00016,:Z64:eJztkSFuxDAQRcey1GEOXWAlVzA0qLpXaW/gsIBIthRQtrhsr9AjJFpg1h5hZxVpSx22IHJquz3Dkvazp68/M18D8K/7irsaCJ0GJYASV2RxbcYIxrK18Pa67inzEBPLdvayWzyE1teJd2o6CP0ywI1OovjThzCtZ+HiMS8wzAl4Rv5O14cfHiUY5O1UfEbcSaCaK5pzno049owkmuXrnO+jCjSnJ6HsvJV8Ax2OKI2dCusaQuX4m97RNXOf0g3gcU2Tsq07PtZ8OEagvF/qgO6R+eO6+Krcn9uzAdRlOCRuls1Hu2ypr//t/xltiKD2/JYYp+2cuAcjWbjbl/6KvgG2R3Au:0CE3^FO0,160^GFA,01024,01024,00016,:Z64:eJztkL0KwjAUhVsFu0i6Zgj4Ctm8YLGvoji4Xjc3qxm61VdxdCx0cHN2bOkujgVraiT9RXBy7IGE+3FyONwYRq+u+KjLQLpMyW//O88g9Z5eNsscnWd0Hb6ifHqi2gfYJYUv3TN82JWMbpKLzxzKS4YsFQcCrPYx2YcMGFZ5TIWQQFD3K39l+jkfY9X/SMUxABJX/bjcX8d8FGrf+eQDAnZc5re4VP3cKv1J9kiKowTNlNg3XLwuee1bZ4xn4g5Dr9naVHOLB6LLZqRmq3k+LBS7rXihrknrF6U6c6PXv/UGkY1SzA==:18AC^FO0,128^GFA,01024,01024,00016,:Z64:eJzt0DEKwzAMQFEFQ7wEd80gfAaPGgy5So+gMUOhOUgP46P4CBk9BFJbcYO7l07R9vgIYQNc899hoxYH+4pdEK9GBSrW69FRf3lGHQkieENil7uDAI9hFJM3pXdb7TgOd4LQvRCPTtLBfrpDzvcj1m5nn6gxMnJrw0Syb4/9nqdU7p89TlvpaLxYx2d27gNWs23v68Ao+70TqxDNlPaEt9T6fL9aqlX8yf9f084bVVdK7Q==:3ABE^FO0,96^GFA,01536,01536,00024,:Z64:eJztkjFqwzAUhiUE0RIssnkQ1tALuJtCQnyVQi+gsUPATwiaLblOR5kOuYaKB68ePQi7L6qdC7RDh7zp8fHx8+vZhDzmMb8ZSidvGJG0p+SoIoPKJ87sFKIItRsYjCpyXw2Jczs1UYWaR9xuXMXEhQN2Lvr2VAjXgRZBHxJX1rOVNM37WtkrKbkvi8R3yM9at+ds5xy8ZUFniW+s5zx/bvx6g75Zv+SrxJ8wn6MP2ZPtSLj72P+afEnJSLw0JV/6d5ePbeP32J+E/aAFJN/O/pHCRNHPZ98BP+ltCwNznQOttfjJn/s0PbWOQjXc8z2/9XeBOXxAFZc+yFeybD49+g7qmGdLPr63bE+QfFPc++MdpHnluF0ZMbKUS/92FGG6jLg5CFkV5/zpC69ei5HCyPEQqp/zp4Cf6iBGBpohr8If/SGP+b/zDYVXmj8=:E317^FO320,64^GFA,02304,02304,00012,:Z64:eJztlL9rFEEUx984kgETdxVBI6wZwcZOyyuW7L/in3BdLEJ2g4Vgc/4BIldKLEQrQZAFi+tC/gLZYHHp7jqXM9nn25l581ZNGUgKH1d87svu+/HdNwNwadEAqCrwUwDN+ujG5zXmDdtdZ06237fMusSjyAcHS2bVwDMpQP84xmoaefRF9AcoDT05qyKb+6I/+ih8+1j41vH5+p1PwncHeZJEOFsTHmnh8YBP0ppR1cL61Yc4r75pX0v69A3zhvuF9ACx2NDni4oUsRvw6UXoVzoeAlwLqOlL7AS2LWisPJctGN4sbGk0rytiG3SN76BYed2QCWXt9ZSWnF81DQD7QwugmC0xnwVbgY7sO3JRkI6t6MzF37z8V//j+Upykq4iD+sOekupZ/6OZins5gr26E7m7QsVPHC5jP4Mfeu9VXhOIhgD3IOrGpWgORVGnDIqxHiW09Uk3m9k6B5z4b6Bj13KxDo9rJuQpnVXnwvdVwpJ9XdwFrkOJuDuAse2M5CFsgVOYNtzYnHGepL/WkC4sbLs+Zw5z3N8HPWtnT3DOh3gCevm5+yl51GuFy+YMz1Xs8AF4v7cD7ZpESHqXwuYcx5auRnnhxQWUU/3g75F+rfDqJsfh9w/rc/bMCPpGOYypHd54P794Imu/Go5P2u/u44b8bn3UteByee0Cly4s+HDTuPOUxItdzXiCTOUWEdeX8H/uKT4DQ7I0SM=:ADE8^FO0,0^GFA,03840,03840,00040,:Z64:eJztlj/Oq0YUxS9jyUgU9hLoKdiC9+MiSzCjly5NtkCJrCfWQKq3izxKy8UXl46ETM45d/Cf71OygfjahmEGfhwO987Y7B3veMd/RdWahePxGNE+qiNWanVp0COfZ23mq1l2Y0+Dj6E1pUGP4nyOFs4IYM/s2eNjaJ3SoEczz6N4uHKlq2fwslk8DF7SeVDWSh8EBuk72l0fejs/LQNoct6AHe9yu/N8UBH6WPe2xmP1rW16nvfdanZjj+2mT48L2M1yqGhG2/4ccIcJvNUcMx+Z/UECVVgAr2it+I2dHfQFqO2s4KCft73wAclDqyRvdQUv/2uAvpK3Gdy+EYbFgG04gTdov4eTA/zjYDXqvBIju0hefrXyd3Si3dj2xwjeDoOlG1hEvlDqg9LqG/ct9BVo4ThK9sIrB/KgaycueeWPi/G5dcjYRP7Wzqu537TwbwMefTRbn77yGj33SN6vl8x56F70FXd9dLOgvupbB33HZHDiuQhceOPF6Glsl12hj+m4mu7+4SL376ycG+BfhRaPTWloiz3OyyZosjKCd0BrUnpniafbJ3380DTos3SUasa208LLwaOiHSvkYORxzGvGPL+Sb53hqOb3u34KT8BcBUBeecHTHgizBqRDEmbOCypc6qtavVn/dvrZQ1+migIvm0e9WV7fZMzBF57tvXARA1ysVLl7eFkl49xEyPJCQzALdywLa1ZsJV6aEQJLVPWrNxtlIZQW8UUfa/4m3o1vthzEA7kcXnko0g9b9x/9ibm4GSBNebgZkn8fdgfGXNOBeEyZJkct//GJx1qlf3qzRSsrC7Y+6UvOGesOyaypYQsLxlf/yBmZf+IFNffIwTC++kcLL85r+GIgzRooXV2clz14LkpvNrRF0he+6CNk4a0ukAZefPB8pxJt1+L1TGoWdF2zlfzzXfPEg5LsygJskNPZ35P9afd6q2hg0kdBnSYc9nYv9fvEo5JsgonWIK1tmvQqcp8POCWF5B8NOxG1p2cnzoNe2v4OFp5mkmnHm1DT7WW+Es/1ScmRvKrzzaf5b+s8KTkcFh42nJtLvy+qFj/5t2bPLzS0ptIaNYyeetB5nO9LzxdtHEXy7nW+75b52ZUs0rR5Wj9yeDRrPuVEKgoYPCwn2940zgjnMZy1fvhUWFHaXocnriJVSr9MK694mlrL6xPvab30Jdb1xaTX/xUUXVqcPRr+MxCPq4+en0unz4xa7D02fb9c8jUwGFNz9fhL8TXyu7xk1r/F4//LO97xv4t/AA4EHZ0=:1E2E^BY1,3,62^FT17,271^B3N,N,,N,N^FD" + second + @"^FS^FT125,171^A0N,28,24^FH\^FD" + first + @"^FS^FT125,202^A0N,28,24^FH\^FD" + second + @"^FS^PQ2,0,1,Y^XZ";
                                RawPrinterHelper.SendStringToPrinter(printerName, s);
                                Resultlbl.Text = "2.5 címke nyomtatása megtörtént.";
                            }
                        }
                    }
                    else
                    {
                        // No data in calibration
                        Resultlbl.Text = "Manuálisan kell címkét nyomtatni! Nem találhatóak adatok kalibráción.";
                    }
                }
                StartedOn = DateTime.Now;
            }
        }
Exemplo n.º 12
0
            public async Task <Result <Contract> > Handle(Contract request, CancellationToken cancellationToken)
            {
                if (request.UserRole == "Secretary" || request.UserRole == "Recruiter")
                {
                    return(Result.Fail <Contract>("Acesso Negado"));
                }

                ObjectId instructorId = String.IsNullOrEmpty(request.InstructorId) ? ObjectId.Empty : ObjectId.Parse(request.InstructorId);
                var      tutorsIds    = request.TutorsIds != null?request.TutorsIds.Select(x => ObjectId.Parse(x)).ToList() :
                                            new List <ObjectId>();

                var eventResult = Event.Create(
                    request.Title,
                    request.Excerpt,
                    request.ImageUrl,
                    instructorId,
                    request.Instructor,
                    request.InstructorMiniBio,
                    request.InstructorImageUrl,
                    request.Tags,
                    request.VideoUrl,
                    request.VideoDuration,
                    request.Duration,
                    request.CertificateUrl,
                    tutorsIds,
                    request.StoreUrl,
                    request.ForceProblemStatement
                    );

                if (eventResult.IsFailure)
                {
                    return(Result.Fail <Contract>(eventResult.Error));
                }

                var newEvent = eventResult.Data;

                newEvent.PrepQuizQuestionList = new List <PrepQuizQuestion>();

                if (request.PrepQuizQuestionList != null && request.PrepQuizQuestionList.Count > 0)
                {
                    var questions = request.PrepQuizQuestionList.Select(x => x.Question).ToArray();

                    for (int i = 0; i < request.PrepQuizQuestionList.Count; i++)
                    {
                        var prepQuizResult = PrepQuizQuestion.Create(request.PrepQuizQuestionList[i].Question, request.PrepQuizQuestionList[i].FileAsAnswer, questions);
                        if (prepQuizResult.IsFailure)
                        {
                            return(Result.Fail <Contract>(prepQuizResult.Error));
                        }
                        newEvent.PrepQuizQuestionList.Add(prepQuizResult.Data);
                    }
                }

                if (string.IsNullOrEmpty(request.Id))
                {
                    if (request.UserRole == "Student")
                    {
                        return(Result.Fail <Contract>("Acesso Negado"));
                    }

                    string config = _configuration[$"EcommerceIntegration:Active"];

                    if (request.CreateInEcommerce.HasValue && request.CreateInEcommerce.Value && config == "True")
                    {
                        var response = await CreateEcommerceProduct(newEvent);

                        string content = await response.Content.ReadAsStringAsync();

                        if (response.StatusCode == HttpStatusCode.Created)
                        {
                            var parsed = JObject.Parse(content);
                            newEvent.EcommerceId = (long)parsed["product"]["id"];
                        }
                        else
                        {
                            var error = ErrorLog.Create(
                                ErrorLogTypeEnum.EcommerceIntegration,
                                "create-track", content
                                ).Data;

                            await _db.ErrorLogCollection.InsertOneAsync(
                                error, cancellationToken : cancellationToken
                                );
                        }
                    }

                    var newEventList = new List <Event>
                    {
                        newEvent
                    };

                    await _db.EventCollection.InsertOneAsync(
                        newEvent,
                        cancellationToken : cancellationToken
                        );

                    var creationLog = AuditLog.Create(ObjectId.Parse(request.UserId), newEvent.Id, newEvent.GetType().ToString(),
                                                      JsonConvert.SerializeObject(newEventList), EntityAction.Add);

                    await _db.AuditLogCollection.InsertOneAsync(creationLog);

                    request.Id          = newEvent.Id.ToString();
                    request.EcommerceId = newEvent.EcommerceId;
                }
                else
                {
                    var evt = await(await _db
                                    .Database
                                    .GetCollection <Event>("Events")
                                    .FindAsync(x => x.Id == ObjectId.Parse(request.Id), cancellationToken: cancellationToken))
                              .FirstOrDefaultAsync(cancellationToken: cancellationToken);

                    if (evt == null)
                    {
                        return(Result.Fail <Contract>("Evento não Encontrado"));
                    }

                    if (request.UserRole == "Student")
                    {
                        var userId = ObjectId.Parse(request.UserId);

                        if (!evt.InstructorId.HasValue || evt.InstructorId.Value != userId)
                        {
                            return(Result.Fail <Contract>("Acesso Negado"));
                        }
                    }

                    var oldEventList = JsonConvert.SerializeObject(new List <Event>
                    {
                        newEvent
                    });

                    evt.Title              = newEvent.Title;
                    evt.Excerpt            = newEvent.Excerpt;
                    evt.ImageUrl           = newEvent.ImageUrl;
                    evt.InstructorId       = newEvent.InstructorId;
                    evt.Instructor         = newEvent.Instructor;
                    evt.InstructorMiniBio  = newEvent.InstructorMiniBio;
                    evt.InstructorImageUrl = newEvent.InstructorImageUrl;
                    evt.Tags                  = newEvent.Tags;
                    evt.VideoUrl              = newEvent.VideoUrl;
                    evt.VideoDuration         = newEvent.VideoDuration;
                    evt.Duration              = newEvent.Duration;
                    evt.PrepQuiz              = newEvent.PrepQuiz;
                    evt.CertificateUrl        = newEvent.CertificateUrl;
                    evt.TutorsIds             = newEvent.TutorsIds;
                    evt.StoreUrl              = newEvent.StoreUrl;
                    evt.EcommerceId           = request.EcommerceId;
                    evt.PrepQuizQuestionList  = newEvent.PrepQuizQuestionList;
                    evt.ForceProblemStatement = newEvent.ForceProblemStatement;

                    await _db.EventCollection.ReplaceOneAsync(t =>
                                                              t.Id == evt.Id, evt,
                                                              cancellationToken : cancellationToken
                                                              );

                    var newEventList = new List <Event>
                    {
                        evt
                    };

                    var changeLog = AuditLog.Create(ObjectId.Parse(request.UserId), evt.Id, evt.GetType().ToString(),
                                                    JsonConvert.SerializeObject(newEventList), EntityAction.Update, oldEventList);

                    await _db.AuditLogCollection.InsertOneAsync(changeLog);

                    if (evt.EcommerceId.HasValue)
                    {
                        string config = _configuration[$"EcommerceIntegration:Active"];
                        if (config == "True")
                        {
                            await UpdateEcommerceProduct(evt);
                        }
                    }
                }

                return(Result.Ok(request));
            }
        private void FormValidator()
        {
            if (IsDmValidated == true)
            {
                // Mainboard and DSP
                if (MbDmTxbx.Text.Length > 0 && (DSP11DmTxbx.Text.Length > 0 || DSP12DmTxbx.Text.Length > 0 || DSP13DmTxbx.Text.Length > 0 || DSP21DmTxbx.Text.Length > 0 || DSP22DmTxbx.Text.Length > 0 || DSP23DmTxbx.Text.Length > 0))
                {
                    DoMbDspRework = true;
                }
                else
                {
                    DoMbDspRework = false;
                }
                // House and Gateway
                if (HousingDmTxbx.Text.Length > 0 && GwDmTxbx.Text.Length > 0)
                {
                    bool isHouseValid = check("potting", "housing_dm", HousingDmTxbx.Text);

                    if (isHouseValid)
                    {
                        DoHousingGwRework = true;
                    }
                    else
                    {
                        if (ConfigurationManager.AppSettings["PreCheckMode"] == "hard")
                        {
                            CallMessageForm("Potting után kaptonozás folyamaton nem szerepelt a Ház!");
                        }
                        else
                        {
                            ErrorLog.Create("potting", "housing_dm", HousingDmTxbx.Text, MethodBase.GetCurrentMethod().Name.ToString(), "Potting után kaptonozás folyamaton nem szerepelt a Ház!", this.GetType().Name.ToString());
                        }

                        DoHousingGwRework = false;
                    }
                }

                // House and Mainboard
                if (HousingDmTxbx.Text.Length > 0 && MbDmTxbx.Text.Length > 0)
                {
                    bool isHouseValid = check("potting", "housing_dm", HousingDmTxbx.Text);
                    bool isMbValid    = check("mb_dsp_assy", "mb_dm", MbDmTxbx.Text);

                    if (isHouseValid && isMbValid)
                    {
                        DoHousingMbRework = true;
                    }
                    else
                    {
                        if (!isHouseValid)
                        {
                            if (ConfigurationManager.AppSettings["PreCheckMode"] == "hard")
                            {
                                CallMessageForm("Potting után kaptonozás folyamaton nem szerepelt a Ház!");
                            }
                            else
                            {
                                ErrorLog.Create("potting", "housing_dm", HousingDmTxbx.Text, MethodBase.GetCurrentMethod().Name.ToString(), "Potting után kaptonozás folyamaton nem szerepelt a Ház!", this.GetType().Name.ToString());
                            }
                        }

                        if (!isMbValid)
                        {
                            if (ConfigurationManager.AppSettings["PreCheckMode"] == "hard")
                            {
                                CallMessageForm("Mainboard DSP szer. folyamaton nem szerepelt a Mainboard!");
                            }
                            else
                            {
                                ErrorLog.Create("mb_dsp_assy", "mb_dm", MbDmTxbx.Text, MethodBase.GetCurrentMethod().Name.ToString(), "Mainboard DSP szer. folyamaton nem szerepelt a Mainboard!!", this.GetType().Name.ToString());
                            }
                        }

                        DoHousingMbRework = false;
                    }
                }
            }
            else
            {
                CallMessageForm("Hibás kitöltés");
            }
        }
        private void FormValidator()
        {
            string errorMsg = "";

            if (IsDmValidated == true)
            {
                if (ConfigurationManager.AppSettings["PreCheckMode"] == "hard")
                {
                    PreChk("cooling_leak_test", "housing_dm", HousingDmTxbx.Text);

                    if (IsPreChkPassed)
                    {
                        PreChk("fb_emc_assy", "fb_dm", FbDmTxbx.Text);
                        if (IsPreChkPassed)
                        {
                            AllFieldsValidated = true;
                        }
                        else
                        {
                            errorMsg += "Előző munkafolyamaton nem szerepelt a Filterboard! ";
                        }
                    }
                    else
                    {
                        errorMsg += " Előző munkafolyamaton nem szerepelt a Ház! ";
                    }
                }
                else
                {
                    PreChk("cooling_leak_test", "housing_dm", HousingDmTxbx.Text);

                    if (!IsPreChkPassed)
                    {
                        ErrorLog.Create("cooling_leak_test", "housing_dm", HousingDmTxbx.Text, MethodBase.GetCurrentMethod().Name.ToString(), "Előző munkafolyamaton nem szerepelt a Ház!", this.GetType().Name.ToString());
                        IsPreChkPassed = true;
                    }

                    if (IsPreChkPassed)
                    {
                        PreChk("fb_emc_assy", "fb_dm", FbDmTxbx.Text);

                        if (!IsPreChkPassed)
                        {
                            ErrorLog.Create("fb_emc_assy", "fb_dm", FbDmTxbx.Text, MethodBase.GetCurrentMethod().Name.ToString(), "Előző munkafolyamaton nem szerepelt a Filterboard!", this.GetType().Name.ToString());
                            IsPreChkPassed = true;
                        }

                        AllFieldsValidated = true;
                    }
                }
            }

            if (IsDmValidated == false)
            {
                errorMsg += " DataMátrix nem megfelelő! ";
            }

            if (errorMsg != "")
            {
                CallMessageForm(errorMsg);
            }
        }
Exemplo n.º 15
0
            public async Task <Result <Contract> > Handle(Contract request, CancellationToken cancellationToken)
            {
                if (request.UserRole != "Admin" && request.UserRole != "Author")
                {
                    return(Result.Fail <Contract>("Acesso Negado"));
                }

                var mConfigResult = request.ModulesConfiguration.Select(x =>
                                                                        TrackModule.Create(
                                                                            ObjectId.Parse(x.ModuleId), x.Title,
                                                                            x.Level, x.Percentage, x.Order,
                                                                            x.Weight, x.CutOffDate, x.BDQWeight, x.EvaluationWeight,
                                                                            x.AlwaysAvailable, x.OpenDate, x.ValuationDate
                                                                            )
                                                                        ).ToArray();

                var mCombinedResult = Result.Combine(mConfigResult);

                if (mCombinedResult.IsFailure)
                {
                    return(Result.Fail <Contract>(mCombinedResult.Error));
                }

                if (request.EventsConfiguration == null)
                {
                    request.EventsConfiguration = new List <ContractTrackEvent>();
                }

                var eConfigResult = request.EventsConfiguration.Select(x =>
                                                                       TrackEvent.Create(
                                                                           ObjectId.Parse(x.EventId),
                                                                           ObjectId.Parse(x.EventScheduleId),
                                                                           x.Order, x.Title, x.Weight, x.CutOffDate, x.AlwaysAvailable,
                                                                           x.OpenDate, x.ValuationDate
                                                                           )
                                                                       ).ToArray();

                var eCombinedResult = Result.Combine(eConfigResult);

                if (eCombinedResult.IsFailure)
                {
                    return(Result.Fail <Contract>(eCombinedResult.Error));
                }

                var tags = new List <ValueObjects.Tag>();

                foreach (var tagStr in request.Tags)
                {
                    var tag = ValueObjects.Tag.Create(tagStr);
                    tags.Add(tag.Data);
                }

                var trackDuration = await GetTrackDuration(request, cancellationToken);

                ObjectId?profileTestId = null;

                if (!String.IsNullOrEmpty(request.ProfileTestId))
                {
                    profileTestId = ObjectId.Parse(request.ProfileTestId);
                }

                var newObject = Track.Create(
                    request.Title, request.Description, request.ImageUrl,
                    eConfigResult.Select(x => x.Data).ToList(),
                    mConfigResult.Select(x => x.Data).ToList(),
                    0, trackDuration, tags, request.Published,
                    request.CertificateUrl, request.StoreUrl, request.EcommerceUrl,
                    profileTestId, request.ProfileTestName, request.ValidFor
                    );

                if (newObject.IsFailure)
                {
                    return(Result.Fail <Contract>(newObject.Error));
                }

                var newTrack = newObject.Data;

                if (string.IsNullOrEmpty(request.Id))
                {
                    string config = _configuration[$"EcommerceIntegration:Active"];

                    if (request.CreateInEcommerce.HasValue && request.CreateInEcommerce.Value && config == "True")
                    {
                        var response = await CreateEcommerceProduct(newTrack);

                        string content = await response.Content.ReadAsStringAsync();

                        if (response.StatusCode == HttpStatusCode.Created)
                        {
                            var parsed = JObject.Parse(content);
                            newTrack.EcommerceProducts = new List <EcommerceProduct>();
                            newTrack.EcommerceProducts.Add(
                                EcommerceProduct.Create(
                                    (long)parsed["product"]["id"], 1, false, null, false, null, null, null, null
                                    ).Data
                                );
                        }
                        else
                        {
                            var error = ErrorLog.Create(
                                ErrorLogTypeEnum.EcommerceIntegration,
                                "create-track", content
                                ).Data;

                            await _db.ErrorLogCollection.InsertOneAsync(
                                error, cancellationToken : cancellationToken
                                );
                        }
                    }

                    newTrack.RequireUserCareer = request.RequireUserCareer;
                    newTrack.AllowedPercentageWithoutCareerInfo = request.AllowedPercentageWithoutCareerInfo;

                    await _db.TrackCollection.InsertOneAsync(
                        newTrack,
                        cancellationToken : cancellationToken
                        );

                    request.Id = newTrack.Id.ToString();
                }
                else
                {
                    var query = await _db.Database
                                .GetCollection <Track>("Tracks")
                                .FindAsync(x =>
                                           x.Id == ObjectId.Parse(request.Id),
                                           cancellationToken: cancellationToken
                                           );

                    var track = await query.FirstOrDefaultAsync(
                        cancellationToken : cancellationToken
                        );

                    if (track == null)
                    {
                        return(Result.Fail <Contract>("Trilha não Encontrada"));
                    }

                    track.Title                = newObject.Data.Title;
                    track.Description          = newObject.Data.Description;
                    track.EventsConfiguration  = newObject.Data.EventsConfiguration;
                    track.ImageUrl             = newObject.Data.ImageUrl;
                    track.ModulesConfiguration = newObject.Data.ModulesConfiguration;
                    track.UpdatedAt            = DateTimeOffset.UtcNow;
                    track.Tags                 = newObject.Data.Tags;
                    track.Duration             = newObject.Data.Duration;
                    track.Published            = newObject.Data.Published;
                    track.CertificateUrl       = newObject.Data.CertificateUrl;
                    track.VideoUrl             = request.VideoUrl;
                    track.VideoDuration        = request.VideoDuration;
                    track.MandatoryCourseVideo = request.MandatoryCourseVideo.HasValue ?
                                                 request.MandatoryCourseVideo.Value : false;
                    track.CourseVideoUrl      = request.CourseVideoUrl;
                    track.CourseVideoDuration = request.CourseVideoDuration;
                    track.StoreUrl            = request.StoreUrl;
                    track.EcommerceUrl        = request.EcommerceUrl;
                    track.RequireUserCareer   = request.RequireUserCareer;
                    track.AllowedPercentageWithoutCareerInfo = request.AllowedPercentageWithoutCareerInfo;
                    track.ProfileTestId   = profileTestId;
                    track.ProfileTestName = request.ProfileTestName;
                    track.ValidFor        = request.ValidFor;

                    await _db.TrackCollection.ReplaceOneAsync(t =>
                                                              t.Id == track.Id, track,
                                                              cancellationToken : cancellationToken
                                                              );

                    if (track.EcommerceProducts != null)
                    {
                        string config = _configuration[$"EcommerceIntegration:Active"];
                        if (config == "True")
                        {
                            foreach (var product in track.EcommerceProducts)
                            {
                                await UpdateEcommerceProduct(track, product.EcommerceId);
                            }
                        }
                    }
                }

                return(Result.Ok(request));
            }
Exemplo n.º 16
0
            public async Task <Result <Module> > Handle(Contract request, CancellationToken cancellationToken)
            {
                try
                {
                    if (request.UserRole == "Student" || request.UserRole == "Recruiter")
                    {
                        return(Result.Fail <Module>("Acesso Negado"));
                    }

                    Duration duration = null;
                    if (request.Duration.HasValue)
                    {
                        var durationResult = Duration.Create(request.Duration.Value);
                        if (durationResult.IsFailure)
                        {
                            return(Result.Fail <Module>(durationResult.Error));
                        }

                        duration = durationResult.Data;
                    }

                    var tags = new List <Tag>();
                    foreach (var tagStr in request.Tags)
                    {
                        var tag = Tag.Create(tagStr);
                        tags.Add(tag.Data);
                    }

                    var tutorsIds = request.TutorsIds != null?request.TutorsIds.Select(x => ObjectId.Parse(x)).ToList() :
                                        new List <ObjectId>();

                    var extraInstructorIds = request.ExtraInstructorIds != null?request.ExtraInstructorIds.Select(x => ObjectId.Parse(x)).ToList() :
                                                 new List <ObjectId>();

                    var module = Module.Create(
                        request.Title, request.Excerpt,
                        request.InstructorId, request.Instructor, request.InstructorMiniBio,
                        request.ImageUrl, request.InstructorImageUrl,
                        request.Published, duration, tags, request.CertificateUrl,
                        tutorsIds, extraInstructorIds, request.StoreUrl
                        );

                    if (module.IsFailure)
                    {
                        return(Result.Fail <Module>(module.Error));
                    }

                    if (request.Subjects != null)
                    {
                        foreach (var csubject in request.Subjects)
                        {
                            var subject = Subject.Create(csubject.Title, csubject.Excerpt, csubject.Concepts);
                            if (subject.IsFailure)
                            {
                                return(Result.Fail <Module>(subject.Error));
                            }

                            module.Data.Subjects.Add(subject.Data);
                            foreach (var ccontent in csubject.Contents)
                            {
                                var content = Content.Create(
                                    ccontent.Title, ccontent.Excerpt,
                                    ccontent.Concepts.Select(x =>
                                                             new ConceptPosition(x, null, null)
                                                             ).ToList(), new string[] { },
                                    ccontent.Link,
                                    ccontent.Type, 0
                                    );

                                if (content.IsFailure)
                                {
                                    return(Result.Fail <Module>(subject.Error));
                                }

                                subject.Data.Contents.Add(content.Data);
                            }
                        }
                    }

                    string config = _configuration[$"EcommerceIntegration:Active"];

                    if (request.CreateInEcommerce.HasValue && request.CreateInEcommerce.Value && config == "True")
                    {
                        var response = await CreateEcommerceProduct(module.Data);

                        string content = await response.Content.ReadAsStringAsync();

                        if (response.StatusCode == HttpStatusCode.Created)
                        {
                            var parsed = JObject.Parse(content);
                            module.Data.EcommerceId = (long)parsed["product"]["id"];
                        }
                        else
                        {
                            var error = ErrorLog.Create(
                                ErrorLogTypeEnum.EcommerceIntegration,
                                "create-module", content
                                ).Data;

                            await _db.ErrorLogCollection.InsertOneAsync(
                                error, cancellationToken : cancellationToken
                                );
                        }
                    }

                    await _db.ModuleCollection.InsertOneAsync(
                        module.Data,
                        cancellationToken : cancellationToken
                        );

                    return(module);
                }
                catch (Exception err)
                {
                    Console.WriteLine(err.Message);
                    throw;
                }
            }