private void SetUserFSS(ref UserAuthenticated userAuth, int empID)
        {
            DateTime today = DateTime.UtcNow.ToUtcID();

            IRepository <FSS> repoFSS = _unitOfWork.GetRepository <FSS>();

            repoFSS.Condition = PredicateBuilder.True <FSS>().And(x => x.NIK == empID && x.ValidTo >= today);

            FSS fss = repoFSS.Find().FirstOrDefault();

            if (fss == null)
            {
                return;
            }

            bool allowByNIK = false;

            userAuth.IsRoleValid = true;
            userAuth.NIK         = fss.NIK;
            userAuth.Fullname    = fss.FullName;
            if (fss.UploadValidTo != null)
            {
                if (fss.UploadValidTo.Value.Date >= today.Date)
                {
                    allowByNIK = true;
                }
            }
            //userAuth.IsAbleToWrite = fss.AllowedByNIK == null ? false : true;
            userAuth.IsAbleToWrite = allowByNIK;
        }
        public SupervisorViewModel GetDetail(int id)
        {
            IRepository <FSS> repo = _unitOfWork.GetRepository <FSS>();

            repo.Condition = PredicateBuilder.True <FSS>().And(x => x.NIK == id);

            FSS item = repo.Find().FirstOrDefault();

            if (item == null)
            {
                return(null);
            }

            return(GetSupervisorViewModel(item));
        }
        private SupervisorViewModel GetSupervisorViewModel(FSS item)
        {
            SupervisorViewModel model = new SupervisorViewModel();

            model.NIK                    = item.NIK;
            model.Fullname               = item.FullName;
            model.IsRole                 = item.Role;
            model.DefaultRayonType       = item.DefaultRayonType;
            model.AllowWriteBy           = item.AllowedByNIK;
            model.IsAbleToUpload         = item.AllowedByNIK == null ? false : true;
            model.UploadValidTo          = item.UploadValidTo;
            model.FormattedUploadValidTo = model.UploadValidTo == null ? null : model.UploadValidTo.Value.ToString(AppConstant.DefaultFormatDate);

            model.ValidFromDate = item.ValidFrom;
            model.ValidToDate   = item.ValidTo;

            model.FormattedValidFrom = model.ValidFromDate.ToString(AppConstant.DefaultFormatDate);
            model.FormattedValidTo   = model.ValidToDate.ToString(AppConstant.DefaultFormatDate);

            return(model);
        }
Exemple #4
0
        private bool Ausfuehren_Loeschen()
        {
            switch (_elementTyp)
            {
            case ElementTyp.Gleis:
                Gleis gleis = (Gleis)_element;

                foreach (Signal el in gleis.Signale)
                {
                    _anlagenElemente.SignalElemente.Löschen(el);
                }
                foreach (Entkuppler el in gleis.Entkuppler)
                {
                    _anlagenElemente.EntkupplerElemente.Löschen(el);
                }
                if (gleis.Fss != null)
                {
                    _anlagenElemente.FssElemente.Löschen(gleis.Fss);
                }
                if (gleis.Schalter != null)
                {
                    _anlagenElemente.SchalterElemente.Löschen(gleis.Schalter);
                }

                _anlagenElemente.GleisElemente.Löschen(gleis);
                int index = gleis.StartKn.GetGleisAnschlussNr(gleis);
                gleis.StartKn.Gleise[index] = null;
                if (index < 2)
                {
                    if (gleis.StartKn.Weichen[0] != null)
                    {
                        _anlagenElemente.WeicheElemente.Löschen(gleis.StartKn.Weichen[0]);
                        gleis.StartKn.Weichen[0] = null;
                    }
                }
                else
                {
                    if (gleis.StartKn.Weichen[1] != null)
                    {
                        _anlagenElemente.WeicheElemente.Löschen(gleis.StartKn.Weichen[1]);
                        gleis.StartKn.Weichen[1] = null;
                    }
                }
                int count = 0;
                foreach (Gleis gl in gleis.StartKn.Gleise)
                {
                    if (gl != null)
                    {
                        count++;
                    }
                }
                if (count == 0)
                {
                    _anlagenElemente.KnotenElemente.Löschen(gleis.StartKn);
                }

                index = gleis.EndKn.GetGleisAnschlussNr(gleis);
                gleis.EndKn.Gleise[index] = null;
                if (index < 2)
                {
                    if (gleis.EndKn.Weichen[0] != null)
                    {
                        gleis.EndKn.Weichen[0] = null;
                        _anlagenElemente.WeicheElemente.Löschen(gleis.EndKn.Weichen[0]);
                    }
                }
                else
                {
                    if (gleis.EndKn.Weichen[1] != null)
                    {
                        gleis.EndKn.Weichen[1] = null;
                        _anlagenElemente.WeicheElemente.Löschen(gleis.EndKn.Weichen[1]);
                    }
                }
                count = 0;
                foreach (Gleis gl in gleis.EndKn.Gleise)
                {
                    if (gl != null)
                    {
                        count++;
                    }
                }
                if (count == 0)
                {
                    _anlagenElemente.KnotenElemente.Löschen(gleis.EndKn);
                }
                break;

            case ElementTyp.Signal:
                Signal sig = (Signal)_element;
                _anlagenElemente.SignalElemente.Löschen(sig);
                sig.AnschlussGleis.GleisElementAustragen(sig);
                break;

            case ElementTyp.Entkuppler:
                Entkuppler entkuppler = (Entkuppler)_element;
                _anlagenElemente.EntkupplerElemente.Löschen(entkuppler);
                entkuppler.AnschlussGleis.GleisElementAustragen(entkuppler);
                break;

            case ElementTyp.FSS:
                FSS fss = (FSS)_element;
                _anlagenElemente.FssElemente.Löschen(fss);
                fss.AnschlussGleis.GleisElementAustragen(fss);
                break;

            case ElementTyp.Schalter:
                Schalter schalter = (Schalter)_element;
                _anlagenElemente.SchalterElemente.Löschen(schalter);
                schalter.AnschlussGleis.GleisElementAustragen(schalter);
                break;

            case ElementTyp.InfoElement:
                InfoFenster infoFenster = (InfoFenster)_element;
                _anlagenElemente.InfoElemente.Löschen(infoFenster);
                infoFenster.AnschlussGleis.GleisElementAustragen(infoFenster);
                break;

            case ElementTyp.Knoten:

                break;
            }
            return(true);
        }
Exemple #5
0
        public AlertMessage Preview(ImportTagihViewModel model)
        {
            AlertMessage alert = new AlertMessage();

            if (!IsAccessible(ModuleCode.MasterTagih))
            {
                alert.Text = StaticMessage.ERR_ACCESS_DENIED;
                return(alert);
            }

            List <HierTagihViewModel> listVM = GetListHierTagihViewModel(model.InputFile);

            if (listVM == null)
            {
                alert.Text = StaticMessage.ERR_INVALID_INPUT;
                return(alert);
            }

            IRepository <FSS>          repoFSS         = _unitOfWork.GetRepository <FSS>();
            IRepository <SLM>          repoSLM         = _unitOfWork.GetRepository <SLM>();
            IRepository <TCollector>   repoCollector   = _unitOfWork.GetRepository <TCollector>();
            IRepository <TFakturis>    repoFakturis    = _unitOfWork.GetRepository <TFakturis>();
            IRepository <TSPVFakturis> repoSPVFakturis = _unitOfWork.GetRepository <TSPVFakturis>();
            FSS          fss         = null;
            SLM          slm         = null;
            TCollector   collector   = null;
            TFakturis    fakturis    = null;
            TSPVFakturis spvFakturis = null;

            DateTime dtMaxValidTo = DateTime.ParseExact(AppConstant.DefaultValidTo, AppConstant.DefaultFormatDate, _cultureInfo);

            Dictionary <int, string>  dcExistingFSS         = new Dictionary <int, string>();
            Dictionary <int, string>  dcExistingSLM         = new Dictionary <int, string>();
            Dictionary <long, string> dcExistingCollector   = new Dictionary <long, string>();
            Dictionary <long, string> dcExistingFakturis    = new Dictionary <long, string>();
            Dictionary <long, string> dcExistingSPVFakturis = new Dictionary <long, string>();

            DateTime today = DateTime.UtcNow.ToUtcID().Date;

            List <string> listRemarks = null;

            foreach (var item in listVM)
            {
                if (!string.IsNullOrEmpty(item.Remarks))
                {
                    continue;
                }

                if (dcExistingFSS.ContainsKey(item.FSSNik) &&
                    dcExistingSLM.ContainsKey(item.SLMNik) &&
                    item.CollectorNik != null &&
                    dcExistingCollector.ContainsKey(item.CollectorNik.Value) &&
                    item.FakturisNik != null &&
                    dcExistingFakturis.ContainsKey(item.FakturisNik.Value) &&
                    item.SPVFakturisNik != null &&
                    dcExistingSPVFakturis.ContainsKey(item.SPVFakturisNik.Value))
                {
                    continue;
                }

                listRemarks = new List <string>();

                #region check FSS
                if (item.FSSNik != 0 && !dcExistingFSS.ContainsKey(item.FSSNik))
                {
                    repoFSS.Condition = PredicateBuilder.True <FSS>().And(x => x.NIK == item.FSSNik);
                    repoFSS.OrderBy   = new SqlOrderBy("CreatedOn", SqlOrderType.Descending);

                    fss = repoFSS.Find().FirstOrDefault();

                    if (fss == null)
                    {
                        listRemarks.Add(string.Format(StaticMessage.ERR_FSS_NOT_FOUND, item.FSSNik));
                    }
                    else if (fss.ValidTo < today)
                    {
                        listRemarks.Add(string.Format(StaticMessage.ERR_FSS_NOT_ACTIVE, item.FSSNik));
                    }
                    else
                    {
                        dcExistingFSS[fss.NIK] = fss.FullName;
                    }
                }
                #endregion

                #region check SLM
                if (item.SLMNik != 0 && !dcExistingSLM.ContainsKey(item.SLMNik))
                {
                    repoSLM.Condition = PredicateBuilder.True <SLM>().And(x => x.NIK == item.SLMNik);
                    repoSLM.OrderBy   = new SqlOrderBy("CreatedOn", SqlOrderType.Descending);

                    slm = repoSLM.Find().FirstOrDefault();

                    if (slm == null)
                    {
                        listRemarks.Add(string.Format(StaticMessage.ERR_SLM_NOT_FOUND, item.SLMNik));
                    }
                    else if (slm.ValidTo < today)
                    {
                        listRemarks.Add(string.Format(StaticMessage.ERR_SLM_NOT_ACTIVE, item.SLMNik));
                    }
                    else
                    {
                        dcExistingSLM[slm.NIK] = slm.FullName;
                    }
                }
                #endregion

                #region check Controller
                if (item.CollectorNik != null && item.CollectorNik.Value != 0 && !dcExistingCollector.ContainsKey(item.CollectorNik.Value))
                {
                    repoCollector.Condition = PredicateBuilder.True <TCollector>().And(x => x.NIK == item.CollectorNik.Value);
                    repoCollector.OrderBy   = new SqlOrderBy("CreatedOn", SqlOrderType.Descending);

                    collector = repoCollector.Find().FirstOrDefault();

                    if (collector == null)
                    {
                        listRemarks.Add(string.Format(StaticMessage.ERR_COLLECTOR_NOT_FOUND, item.CollectorNik.Value));
                    }
                    else if (collector.ValidTo < today)
                    {
                        listRemarks.Add(string.Format(StaticMessage.ERR_COLLECTOR_NOT_ACTIVE, item.CollectorNik.Value));
                    }
                    else
                    {
                        dcExistingCollector[collector.NIK] = collector.FULLNAME;
                    }
                }
                #endregion

                #region check Fakturis
                if (item.FakturisNik != null && item.FakturisNik.Value != 0 && !dcExistingFakturis.ContainsKey(item.FakturisNik.Value))
                {
                    repoFakturis.Condition = PredicateBuilder.True <TFakturis>().And(x => x.NIK == item.FakturisNik.Value);
                    repoFakturis.OrderBy   = new SqlOrderBy("CreatedOn", SqlOrderType.Descending);

                    fakturis = repoFakturis.Find().FirstOrDefault();

                    if (fakturis == null)
                    {
                        listRemarks.Add(string.Format(StaticMessage.ERR_FAKTURIS_NOT_FOUND, item.FakturisNik.Value));
                    }
                    else if (fakturis.ValidTo < today)
                    {
                        listRemarks.Add(string.Format(StaticMessage.ERR_FAKTURIS_NOT_ACTIVE, item.FakturisNik.Value));
                    }
                    else
                    {
                        dcExistingFakturis[fakturis.NIK] = fakturis.FULLNAME;
                    }
                }
                #endregion

                #region check SPV Fakturis
                if (item.SPVFakturisNik != null && item.SPVFakturisNik.Value != 0 && !dcExistingFakturis.ContainsKey(item.SPVFakturisNik.Value))
                {
                    repoSPVFakturis.Condition = PredicateBuilder.True <TSPVFakturis>().And(x => x.NIK == item.SPVFakturisNik.Value);
                    repoSPVFakturis.OrderBy   = new SqlOrderBy("CreatedOn", SqlOrderType.Descending);

                    spvFakturis = repoSPVFakturis.Find().FirstOrDefault();

                    if (spvFakturis == null)
                    {
                        listRemarks.Add(string.Format(StaticMessage.ERR_SPV_FAKTURIS_NOT_FOUND, item.SPVFakturisNik.Value));
                    }
                    else if (spvFakturis.ValidTo < today)
                    {
                        listRemarks.Add(string.Format(StaticMessage.ERR_SPV_FAKTURIS_NOT_ACTIVE, item.SPVFakturisNik.Value));
                    }
                    else
                    {
                        dcExistingSPVFakturis[spvFakturis.NIK] = spvFakturis.FULLNAME;
                    }
                }
                #endregion

                if (listRemarks.Count > 0)
                {
                    item.Remarks = String.Join("; ", listRemarks.ToArray());
                }
            }

            int numError = listVM.Count(x => !string.IsNullOrEmpty(x.Remarks));

            if (numError > 0)
            {
                alert.Status = 0;
                alert.Text   = string.Format(StaticMessage.ERR_PREVIEW_CONTAINS_ERROR, numError);
            }

            model.ListHierTagih = listVM;

            alert.Data = model;

            return(alert);
        }
Exemple #6
0
 private void fssLaden(int ID)
 {
     _fss = _model.ZeichnenElemente.FssElemente.Element(ID);
     _model.BearbeitenSelektieren(_fss);
     fssDatenLaden();
 }
        public AlertMessage Preview(ImportSalesViewModel model)
        {
            AlertMessage alert = new AlertMessage();

            if (!IsAccessible(ModuleCode.MasterSales))
            {
                alert.Text = StaticMessage.ERR_ACCESS_DENIED;
                return(alert);
            }

            if (!IsEditable())
            {
                alert.Text = StaticMessage.ERR_ACCESS_DENIED;
                return(alert);
            }

            List <HierSalesViewModel> listVM = GetListHierSalesViewModel(model.InputFile);

            if (listVM == null)
            {
                alert.Text = StaticMessage.ERR_INVALID_INPUT;
                return(alert);
            }

            IRepository <FSS> repoFSS = _unitOfWork.GetRepository <FSS>();
            IRepository <SLM> repoSLM = _unitOfWork.GetRepository <SLM>();
            FSS fss = null;
            SLM slm = null;

            DateTime dtMaxValidTo = DateTime.ParseExact(AppConstant.DefaultValidTo, AppConstant.DefaultFormatDate, _cultureInfo);

            Dictionary <int, string> dcExistingFSS = new Dictionary <int, string>();
            Dictionary <int, string> dcExistingSLM = new Dictionary <int, string>();

            DateTime today = DateTime.UtcNow.ToUtcID().Date;

            List <string> listRemarks = null;

            foreach (var item in listVM)
            {
                if (!string.IsNullOrEmpty(item.Remarks))
                {
                    continue;
                }

                if (dcExistingFSS.ContainsKey(item.FSSNik) && dcExistingSLM.ContainsKey(item.SLMNik))
                {
                    continue;
                }

                listRemarks = new List <string>();

                if (item.FSSNik != 0 && !dcExistingFSS.ContainsKey(item.FSSNik))
                {
                    repoFSS.Condition = PredicateBuilder.True <FSS>().And(x => x.NIK == item.FSSNik);
                    repoFSS.OrderBy   = new SqlOrderBy("CreatedOn", SqlOrderType.Descending);

                    fss = repoFSS.Find().FirstOrDefault();

                    if (fss == null)
                    {
                        listRemarks.Add(string.Format(StaticMessage.ERR_FSS_NOT_FOUND, item.FSSNik));
                    }
                    else if (fss.ValidTo < today)
                    {
                        listRemarks.Add(string.Format(StaticMessage.ERR_FSS_NOT_ACTIVE, item.FSSNik));
                    }
                    else
                    {
                        dcExistingFSS[fss.NIK] = fss.FullName;
                    }
                }

                if (item.SLMNik != 0 && !dcExistingSLM.ContainsKey(item.SLMNik))
                {
                    repoSLM.Condition = PredicateBuilder.True <SLM>().And(x => x.NIK == item.SLMNik);
                    repoSLM.OrderBy   = new SqlOrderBy("CreatedOn", SqlOrderType.Descending);

                    slm = repoSLM.Find().FirstOrDefault();

                    if (slm == null)
                    {
                        listRemarks.Add(string.Format(StaticMessage.ERR_SLM_NOT_FOUND, item.SLMNik));
                    }
                    else if (slm.ValidTo < today)
                    {
                        listRemarks.Add(string.Format(StaticMessage.ERR_SLM_NOT_ACTIVE, item.SLMNik));
                    }
                    else
                    {
                        dcExistingSLM[slm.NIK] = slm.FullName;
                    }
                }

                if (listRemarks.Count > 0)
                {
                    item.Remarks = String.Join("; ", listRemarks.ToArray());
                }
            }

            int numError = listVM.Count(x => !string.IsNullOrEmpty(x.Remarks));

            if (numError > 0)
            {
                alert.Status = 0;
                alert.Text   = string.Format(StaticMessage.ERR_PREVIEW_CONTAINS_ERROR, numError);
            }

            model.ListHierSales = listVM;

            alert.Data = model;

            return(alert);
        }
Exemple #8
0
        private void buttonArduinoExport_Click(object sender, EventArgs e)
        {
            StreamWriter arduinoStreamWriter = new StreamWriter("ArduinoDaten.txt", false, Encoding.UTF8);

            foreach (MCSpeicher ard in _model.ZeichnenElemente.ListeMCSpeicher.Elemente)
            {
                arduinoStreamWriter.WriteLine("Arduino " + ard.ID);
                for (int i = 0; i < 3; i++)
                {//Relaisplatine
                    arduinoStreamWriter.WriteLine("Relais-Platine " + ard.ID + "-" + i);
                    string[] kurzBezeichnungArray = new string[17];
                    kurzBezeichnungArray[0] = "PC-Bezeichnung";
                    string[] anlagenBezeichnungArray = new string[17];
                    anlagenBezeichnungArray[0] = "Anlagen-Bezeichnung";
                    string[] steckerArray = new string[17];
                    steckerArray[0] = "Stecker";
                    string[] rmArray = new string[17];
                    rmArray[0] = "Rückmeldung";
                    string[] reglerArray = new string[17];
                    reglerArray[0] = "Regler";
                    List <AnlagenElement> anlagenElemente = _model.ZeichnenElemente.RelaisAdresseSuchen(ard.ID, i);
                    foreach (AnlagenElement a in anlagenElemente)
                    {
                        int b = a.Ausgang.BitNr + 1;
                        kurzBezeichnungArray[b]    = kurzBezeichnungArray[b] + a.KurzBezeichnung + " ";
                        anlagenBezeichnungArray[b] = anlagenBezeichnungArray[b] + a.Bezeichnung + " ";
                        steckerArray[b]            = steckerArray[b] + a.Stecker + " ";
                        if (a.GetType().Name == "Gleis")
                        {
                            Gleis g = (Gleis)a;
                            rmArray[b] = rmArray[b] + "RM" + g.Eingang.SpeicherString + " ";
                        }
                        if (a.GetType().Name == "FSS")
                        {
                            FSS f = (FSS)a;
                            int r = f.ReglerNummer1;
                            if (r > 0)
                            {
                                rmArray[b] = rmArray[b] + "Regler" + r + " ";
                            }
                            if (r < 0)
                            {
                                FSS f1 = _model.ZeichnenElemente.FssElemente.Element(-r);
                                rmArray[b] = rmArray[b] + //f1.KurzBezeichnung + "_" +
                                             "Re" + f1.Ausgang.SpeicherString + " ";
                            }
                            r = f.ReglerNummer2;
                            if (r > 0)
                            {
                                reglerArray[b] = reglerArray[b] + "Regler" + r + " ";
                            }
                            if (r < 0)
                            {
                                FSS f2 = _model.ZeichnenElemente.FssElemente.Element(-r);
                                reglerArray[b] = reglerArray[b] + //f2.KurzBezeichnung + "_" +
                                                 "Re" + f2.Ausgang.SpeicherString + " ";
                            }
                        }
                    }

                    for (int a = 0; a < 17; a++)
                    {
                        arduinoStreamWriter.Write(StringBereinigen(kurzBezeichnungArray[a]) + "\t");
                    }
                    arduinoStreamWriter.WriteLine("");
                    for (int a = 0; a < 17; a++)
                    {
                        arduinoStreamWriter.Write(StringBereinigen(anlagenBezeichnungArray[a]) + "\t");
                    }
                    arduinoStreamWriter.WriteLine(" ");
                    for (int a = 0; a < 17; a++)
                    {
                        arduinoStreamWriter.Write(StringBereinigen(steckerArray[a]) + "\t");
                    }
                    arduinoStreamWriter.WriteLine("");
                    for (int a = 0; a < 17; a++)
                    {
                        arduinoStreamWriter.Write(StringBereinigen(rmArray[a]) + "\t");
                    }
                    arduinoStreamWriter.WriteLine("");
                    for (int a = 0; a < 17; a++)
                    {
                        arduinoStreamWriter.Write(StringBereinigen(reglerArray[a]) + "\t");
                    }
                    arduinoStreamWriter.WriteLine(" ");
                }

                for (int i = 0; i < 2; i++)
                {//Rückmelde-Platinen
                    arduinoStreamWriter.WriteLine("RM-Platine " + ard.ID + "-" + i);
                    string[] kurzBezeichnungArray = new string[17];
                    kurzBezeichnungArray[0] = "PC-Bezeichnung";
                    string[] anlagenBezeichnungArray = new string[17];
                    anlagenBezeichnungArray[0] = "Anlagen-Bezeichnung";
                    string[] steckerArray = new string[17];
                    steckerArray[0] = "Stecker";
                    string[] rmArray = new string[17];
                    rmArray[0] = "Rückmeldung";
                    string[] relaisArray = new string[17];
                    relaisArray[0] = "Relais";
                    List <Gleis> gleisElemente = _model.ZeichnenElemente.RMAdresseSuchen(ard.ID, i); //_model.ZeichnenElemente.RMSuchen(ard.ID, i);
                    foreach (Gleis g in gleisElemente)
                    {
                        int b = g.Eingang.BitNr + 1;
                        kurzBezeichnungArray[b]    = kurzBezeichnungArray[b] + g.KurzBezeichnung + " ";
                        anlagenBezeichnungArray[b] = anlagenBezeichnungArray[b] + g.Bezeichnung + " ";
                        steckerArray[b]            = steckerArray[b] + g.Stecker + " ";
                        relaisArray[b]             = relaisArray[b] + "Re"
                                                     + g.Ausgang.SpeicherString + " ";
                    }
                    for (int a = 0; a < kurzBezeichnungArray.Length; a++)
                    {
                        arduinoStreamWriter.Write(StringBereinigen(kurzBezeichnungArray[a]) + "\t");
                    }
                    arduinoStreamWriter.WriteLine("");
                    for (int a = 0; a < anlagenBezeichnungArray.Length; a++)
                    {
                        arduinoStreamWriter.Write(StringBereinigen(anlagenBezeichnungArray[a]) + "\t");
                    }
                    arduinoStreamWriter.WriteLine("");
                    for (int a = 0; a < steckerArray.Length; a++)
                    {
                        arduinoStreamWriter.Write(StringBereinigen(steckerArray[a]) + "\t");
                    }
                    arduinoStreamWriter.WriteLine("");
                    for (int a = 0; a < relaisArray.Length; a++)
                    {
                        arduinoStreamWriter.Write(StringBereinigen(relaisArray[a]) + "\t");
                    }
                    arduinoStreamWriter.WriteLine("");
                }
            }
            arduinoStreamWriter.Flush();
            arduinoStreamWriter.Dispose();
        }
        public AlertMessage Edit(SupervisorViewModel model)
        {
            AlertMessage alert = new AlertMessage();

            if (!IsAccessible(ModuleCode.Supervisor))
            {
                alert.Text = StaticMessage.ERR_ACCESS_DENIED;
                return(alert);
            }

            if (!IsEditable())
            {
                alert.Text = StaticMessage.ERR_ACCESS_DENIED;
                return(alert);
            }

            IRepository <FSS> repo = _unitOfWork.GetRepository <FSS>();

            repo.Condition = PredicateBuilder.True <FSS>().And(x => x.NIK == model.NIK);

            FSS item = repo.Find().FirstOrDefault();

            if (item == null)
            {
                alert.Text = StaticMessage.ERR_DATA_NOT_FOUND;
                return(alert);
            }

            DateTime now = DateTime.UtcNow.ToUtcID();

            item.FullName = model.Fullname;
            //item.Role = model.IsRole;
            item.DefaultRayonType = model.DefaultRayonType;
            item.ValidFrom        = DateTime.Parse(model.FormattedValidFrom);
            item.ValidTo          = DateTime.Parse(model.FormattedValidTo);
            item.UpdatedBy        = _userAuth.NIK.ToString();
            item.UpdatedOn        = now;

            try
            {
                _unitOfWork.BeginTransaction();

                repo.Update(item);

                _unitOfWork.Commit();

                alert.Status = 1;
                alert.Text   = string.Format(StaticMessage.SCS_EDIT, item.NIK, item.FullName);
            }
            catch (Exception ex)
            {
                _logger.Write("error", DateTime.Now, ex.Message, _userAuth.Fullname, ex);
                alert.Text = StaticMessage.ERR_SAVE_FAILED;
            }
            finally
            {
                _unitOfWork.Dispose();
            }

            return(alert);
        }
        public AlertMessage Add(SupervisorViewModel model)
        {
            AlertMessage alert = new AlertMessage();

            if (!IsAccessible(ModuleCode.Supervisor))
            {
                alert.Text = StaticMessage.ERR_ACCESS_DENIED;
                return(alert);
            }

            if (!IsEditable())
            {
                alert.Text = StaticMessage.ERR_ACCESS_DENIED;
                return(alert);
            }

            //model.ValidFromDate = DateTime.ParseExact(model.FormattedValidFrom, AppConstant.DefaultFormatDate, _cultureInfo);
            //model.ValidToDate = DateTime.ParseExact(model.FormattedValidTo, AppConstant.DefaultFormatDate, _cultureInfo);

            IRepository <FSS> repo = _unitOfWork.GetRepository <FSS>();
            FSS item = null;

            repo.Condition = PredicateBuilder.True <FSS>().And(x => x.NIK == model.NIK);

            item = repo.Find().FirstOrDefault();

            if (item != null)
            {
                alert.Text = string.Format(StaticMessage.ERR_NIK_EXIST, model.NIK);
                return(alert);
            }

            DateTime now       = DateTime.UtcNow.ToUtcID();
            DateTime validFrom = now.AddMonths(-1).AddDays(1).Date;
            DateTime validTo   = new DateTime(9999, 12, 31);

            item = new FSS()
            {
                NIK              = model.NIK,
                FullName         = model.Fullname,
                Role             = model.IsRole,
                DefaultRayonType = model.DefaultRayonType,
                ValidFrom        = validFrom,
                ValidTo          = validTo,
                CreatedBy        = _userAuth.NIK.ToString(),
                CreatedOn        = now,
                UpdatedBy        = _userAuth.NIK.ToString(),
                UpdatedOn        = now,
            };

            try
            {
                _unitOfWork.BeginTransaction();

                repo.Insert(item);

                _unitOfWork.Commit();

                alert.Status = 1;
                alert.Text   = string.Format(StaticMessage.SCS_ADD_MASTER, model.NIK, model.Fullname);
            }
            catch (Exception ex)
            {
                _logger.Write("error", DateTime.Now, ex.Message, _userAuth.Fullname, ex);
                alert.Text = StaticMessage.ERR_SAVE_FAILED;
            }
            finally
            {
                _unitOfWork.Dispose();
            }

            return(alert);
        }