示例#1
0
        protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L5BD_SB_1359 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var  returnValue   = new FR_Guid();
            bool editedVersion = false;

            ORM_RES_BLD_Building building = new ORM_RES_BLD_Building();
            if (Parameter.RES_BLD_BuildingID != Guid.Empty)
            {
                var result = building.Load(Connection, Transaction, Parameter.RES_BLD_BuildingID);
                if (result.Status != FR_Status.Success || building.RES_BLD_BuildingID == Guid.Empty)
                {
                    var error = new FR_Guid();
                    error.ErrorMessage = "No Such ID";
                    error.Status       = FR_Status.Error_Internal;
                    return(error);
                }

                List <ORM_RES_DUD_Revision> revisions = new List <ORM_RES_DUD_Revision>();
                revisions = ORM_RES_DUD_Revision.Query.Search(Connection, Transaction, new ORM_RES_DUD_Revision.Query()
                {
                    RES_BLD_Building_RefID = Parameter.RES_BLD_BuildingID,
                    Tenant_RefID           = securityTicket.TenantID,
                    IsDeleted = false
                });

                if (revisions.Count > 0)
                {
                    //building is connected to revision. create new with same properties if IsBuildingForEdit returns 0.
                    if (IsBuildingForEdit(Connection, Transaction, Parameter, building, securityTicket) == 0)
                    {
                        building      = new ORM_RES_BLD_Building();
                        editedVersion = true;
                    }
                    else
                    {
                        var noEdit = new FR_Guid();
                        noEdit.ErrorMessage = "No need to be edited.";
                        noEdit.Status       = FR_Status.Success;
                        return(noEdit);
                    }
                }
            }

            if (building.BuildingRevisionHeader_RefID == Guid.Empty)
            {
                ORM_RES_BLD_Building_RevisionHeader revisionHeader = new ORM_RES_BLD_Building_RevisionHeader();
                revisionHeader.RES_BLD_Building_RevisionHeaderID = Guid.NewGuid();
                revisionHeader.CurrentBuildingVersion_RefID      = building.RES_BLD_BuildingID;
                revisionHeader.RealestateProperty_RefID          = Parameter.RealestatePropertyID;
                revisionHeader.Tenant_RefID = securityTicket.TenantID;
                revisionHeader.Save(Connection, Transaction);
                building.BuildingRevisionHeader_RefID = revisionHeader.RES_BLD_Building_RevisionHeaderID;

                ORM_DOC_Structure_Header structureHeader = new ORM_DOC_Structure_Header();
                structureHeader.Save(Connection, Transaction);
                building.Building_DocumentationStructure_RefID = structureHeader.DOC_Structure_HeaderID;
            }

            building.Building_BalconyPortionPercent = Parameter.Building_BalconyPortionPercent;

            //if building is connected with revision, copied building has to have different name.
            building.Building_Name = editedVersion ? Parameter.Building_Name + " edit" : Parameter.Building_Name;

            building.IsContaminationSuspected             = Parameter.IsContaminationSuspected;
            building.Building_NumberOfFloors              = Parameter.Building_NumberOfFloors;
            building.Building_ElevatorCoveragePercent     = Parameter.Building_ElevatorCoveragePercent;
            building.Building_NumberOfAppartments         = Parameter.Building_NumberOfAppartments;
            building.Building_NumberOfOccupiedAppartments = Parameter.Building_NumberOfOccupiedAppartments;
            building.Building_NumberOfOffices             = Parameter.Building_NumberOfOffices;
            building.Building_NumberOfRetailUnits         = Parameter.Building_NumberOfRetailUnits;
            building.Building_NumberOfProductionUnits     = Parameter.Building_NumberOfProductionUnits;
            building.Building_NumberOfOtherUnits          = Parameter.Building_NumberOfOtherUnits;
            building.Tenant_RefID = securityTicket.TenantID;
            building.Save(Connection, Transaction);

            ORM_RES_BLD_Building_2_GarbageContainerType.Query build2GarbQuery = new ORM_RES_BLD_Building_2_GarbageContainerType.Query();
            build2GarbQuery.RES_BLD_Building_RefID = building.RES_BLD_BuildingID;
            build2GarbQuery.Tenant_RefID           = securityTicket.TenantID;
            List <ORM_RES_BLD_Building_2_GarbageContainerType> buildingsToGarbage = ORM_RES_BLD_Building_2_GarbageContainerType.Query.Search(Connection, Transaction, build2GarbQuery);

            if (buildingsToGarbage.Count != 0)
            {
                ORM_RES_BLD_Building_2_GarbageContainerType garbage = buildingsToGarbage[0];
                garbage.RES_BLD_GarbageContainerType_RefID = Parameter.RES_BLD_GarbageContainerTypeID;
                garbage.Save(Connection, Transaction);
            }
            else
            {
                ORM_RES_BLD_Building_2_GarbageContainerType garbage = new ORM_RES_BLD_Building_2_GarbageContainerType();
                garbage.RES_BLD_GarbageContainerType_RefID = Parameter.RES_BLD_GarbageContainerTypeID;
                garbage.RES_BLD_Building_RefID             = building.RES_BLD_BuildingID;
                garbage.Tenant_RefID = securityTicket.TenantID;
                garbage.Save(Connection, Transaction);
            }

            ORM_RES_BLD_Building_2_BuildingType.Query buildTypeQuery = new ORM_RES_BLD_Building_2_BuildingType.Query();
            buildTypeQuery.RES_BLD_Building_RefID = building.RES_BLD_BuildingID;
            buildTypeQuery.Tenant_RefID           = securityTicket.TenantID;
            List <ORM_RES_BLD_Building_2_BuildingType> buildingsType = ORM_RES_BLD_Building_2_BuildingType.Query.Search(Connection, Transaction, buildTypeQuery);

            if (buildingsType.Count != 0)
            {
                ORM_RES_BLD_Building_2_BuildingType buildingType = buildingsType[0];
                buildingType.RES_BLD_Building_Type_RefID = Parameter.RES_BLD_Building_TypeID;
                buildingType.RES_BLD_Building_RefID      = building.RES_BLD_BuildingID;
                buildingType.Save(Connection, Transaction);
            }
            else
            {
                ORM_RES_BLD_Building_2_BuildingType buildingType = new ORM_RES_BLD_Building_2_BuildingType();
                buildingType.RES_BLD_Building_RefID      = building.RES_BLD_BuildingID;
                buildingType.RES_BLD_Building_Type_RefID = Parameter.RES_BLD_Building_TypeID;
                buildingType.Tenant_RefID = securityTicket.TenantID;
                buildingType.Save(Connection, Transaction);
            }

            if (Parameter.RES_BLD_BuildingID == Guid.Empty || editedVersion)
            {
                for (int i = 0; i < Parameter.AppartmentCount; i++)
                {
                    ORM_RES_BLD_Apartment newAppartment = new ORM_RES_BLD_Apartment();
                    newAppartment.Building_RefID = building.RES_BLD_BuildingID;
                    newAppartment.Tenant_RefID   = securityTicket.TenantID;
                    newAppartment.Save(Connection, Transaction);
                }

                for (int i = 0; i < Parameter.staircasesCount; i++)
                {
                    ORM_RES_BLD_Staircase newStaircase = new ORM_RES_BLD_Staircase();
                    newStaircase.Building_RefID = building.RES_BLD_BuildingID;
                    newStaircase.Tenant_RefID   = securityTicket.TenantID;
                    newStaircase.Save(Connection, Transaction);
                }

                for (int i = 0; i < Parameter.outdoorfacilitiesCount; i++)
                {
                    ORM_RES_BLD_OutdoorFacility newOutdoorfacility = new ORM_RES_BLD_OutdoorFacility();
                    newOutdoorfacility.Building_RefID = building.RES_BLD_BuildingID;
                    newOutdoorfacility.Tenant_RefID   = securityTicket.TenantID;
                    newOutdoorfacility.Save(Connection, Transaction);
                }

                for (int i = 0; i < Parameter.facadesCount; i++)
                {
                    ORM_RES_BLD_Facade newFacade = new ORM_RES_BLD_Facade();
                    newFacade.Building_RefID = building.RES_BLD_BuildingID;
                    newFacade.Tenant_RefID   = securityTicket.TenantID;
                    newFacade.Save(Connection, Transaction);
                }

                for (int i = 0; i < Parameter.roofCount; i++)
                {
                    ORM_RES_BLD_Roof newRoof = new ORM_RES_BLD_Roof();
                    newRoof.Building_RefID = building.RES_BLD_BuildingID;
                    newRoof.Tenant_RefID   = securityTicket.TenantID;
                    newRoof.Save(Connection, Transaction);
                }

                for (int i = 0; i < Parameter.atticsCount; i++)
                {
                    ORM_RES_BLD_Attic newAttic = new ORM_RES_BLD_Attic();
                    newAttic.Building_RefID = building.RES_BLD_BuildingID;
                    newAttic.Tenant_RefID   = securityTicket.TenantID;
                    newAttic.Save(Connection, Transaction);
                }

                for (int i = 0; i < Parameter.basementsCount; i++)
                {
                    ORM_RES_BLD_Basement newBasement = new ORM_RES_BLD_Basement();
                    newBasement.Building_RefID = building.RES_BLD_BuildingID;
                    newBasement.Tenant_RefID   = securityTicket.TenantID;
                    newBasement.Save(Connection, Transaction);
                }

                for (int i = 0; i < Parameter.hvarcsCount; i++)
                {
                    ORM_RES_BLD_HVACR newHvacr = new ORM_RES_BLD_HVACR();
                    newHvacr.Building_RefID = building.RES_BLD_BuildingID;
                    newHvacr.Tenant_RefID   = securityTicket.TenantID;
                    newHvacr.Save(Connection, Transaction);
                }
            }
            else
            {
                ORM_RES_BLD_Apartment.Query appartmentQuery = new ORM_RES_BLD_Apartment.Query();
                appartmentQuery.Building_RefID = Parameter.RES_BLD_BuildingID;
                appartmentQuery.Tenant_RefID   = securityTicket.TenantID;
                appartmentQuery.IsDeleted      = false;
                List <ORM_RES_BLD_Apartment> appartmentList = ORM_RES_BLD_Apartment.Query.Search(Connection, Transaction, appartmentQuery);

                if (appartmentList.Count > Parameter.AppartmentCount)
                {
                    int counts = appartmentList.Count - Parameter.AppartmentCount;
                    for (int i = 0; i < counts; i++)
                    {
                        ORM_RES_BLD_Apartment deleteAppartment = appartmentList[i];
                        deleteAppartment.Remove(Connection, Transaction);
                    }
                }
                else if (appartmentList.Count < Parameter.AppartmentCount)
                {
                    int counts = Parameter.AppartmentCount - appartmentList.Count;
                    for (int i = 0; i < counts; i++)
                    {
                        ORM_RES_BLD_Apartment newAppartment = new ORM_RES_BLD_Apartment();
                        newAppartment.Building_RefID = Parameter.RES_BLD_BuildingID;
                        newAppartment.Tenant_RefID   = securityTicket.TenantID;
                        newAppartment.Save(Connection, Transaction);
                    }
                }

                ORM_RES_BLD_OutdoorFacility.Query outdoorfacilitiesQuery = new ORM_RES_BLD_OutdoorFacility.Query();
                outdoorfacilitiesQuery.Building_RefID = Parameter.RES_BLD_BuildingID;
                outdoorfacilitiesQuery.Tenant_RefID   = securityTicket.TenantID;
                outdoorfacilitiesQuery.IsDeleted      = false;
                List <ORM_RES_BLD_OutdoorFacility> outdoorfacilitiesList = ORM_RES_BLD_OutdoorFacility.Query.Search(Connection, Transaction, outdoorfacilitiesQuery);

                if (outdoorfacilitiesList.Count > Parameter.outdoorfacilitiesCount)
                {
                    int counts = outdoorfacilitiesList.Count - Parameter.outdoorfacilitiesCount;
                    for (int i = 0; i < counts; i++)
                    {
                        ORM_RES_BLD_OutdoorFacility deleteOutdoor = outdoorfacilitiesList[i];
                        deleteOutdoor.Remove(Connection, Transaction);
                    }
                }
                else if (outdoorfacilitiesList.Count < Parameter.outdoorfacilitiesCount)
                {
                    int counts = Parameter.outdoorfacilitiesCount - outdoorfacilitiesList.Count;
                    for (int i = 0; i < counts; i++)
                    {
                        ORM_RES_BLD_OutdoorFacility newOutdoorFacility = new ORM_RES_BLD_OutdoorFacility();
                        newOutdoorFacility.Building_RefID = building.RES_BLD_BuildingID;
                        newOutdoorFacility.Tenant_RefID   = securityTicket.TenantID;
                        newOutdoorFacility.Save(Connection, Transaction);
                    }
                }


                ORM_RES_BLD_Staircase.Query staircaseQuery = new ORM_RES_BLD_Staircase.Query();
                staircaseQuery.Building_RefID = Parameter.RES_BLD_BuildingID;
                staircaseQuery.Tenant_RefID   = securityTicket.TenantID;
                staircaseQuery.IsDeleted      = false;
                List <ORM_RES_BLD_Staircase> staircaseList = ORM_RES_BLD_Staircase.Query.Search(Connection, Transaction, staircaseQuery);

                if (staircaseList.Count > Parameter.staircasesCount)
                {
                    int counts = staircaseList.Count - Parameter.staircasesCount;
                    for (int i = 0; i < counts; i++)
                    {
                        ORM_RES_BLD_Staircase deleteStaircase = staircaseList[i];
                        deleteStaircase.Remove(Connection, Transaction);
                    }
                }
                else if (staircaseList.Count < Parameter.staircasesCount)
                {
                    int counts = Parameter.staircasesCount - staircaseList.Count;
                    for (int i = 0; i < counts; i++)
                    {
                        ORM_RES_BLD_Staircase newStaircase = new ORM_RES_BLD_Staircase();
                        newStaircase.Building_RefID = building.RES_BLD_BuildingID;
                        newStaircase.Tenant_RefID   = securityTicket.TenantID;
                        newStaircase.Save(Connection, Transaction);
                    }
                }

                ORM_RES_BLD_Facade.Query facadesQuery = new ORM_RES_BLD_Facade.Query();
                facadesQuery.Building_RefID = Parameter.RES_BLD_BuildingID;
                facadesQuery.Tenant_RefID   = securityTicket.TenantID;
                facadesQuery.IsDeleted      = false;
                List <ORM_RES_BLD_Facade> facadesList = ORM_RES_BLD_Facade.Query.Search(Connection, Transaction, facadesQuery);

                if (facadesList.Count > Parameter.facadesCount)
                {
                    int counts = facadesList.Count - Parameter.facadesCount;
                    for (int i = 0; i < counts; i++)
                    {
                        ORM_RES_BLD_Facade deleteFacade = facadesList[i];
                        deleteFacade.Remove(Connection, Transaction);
                    }
                }
                else if (facadesList.Count < Parameter.facadesCount)
                {
                    int counts = Parameter.facadesCount - facadesList.Count;
                    for (int i = 0; i < counts; i++)
                    {
                        ORM_RES_BLD_Facade newFacade = new ORM_RES_BLD_Facade();
                        newFacade.Building_RefID = building.RES_BLD_BuildingID;
                        newFacade.Tenant_RefID   = securityTicket.TenantID;
                        newFacade.Save(Connection, Transaction);
                    }
                }

                ORM_RES_BLD_Roof.Query roofQuery = new ORM_RES_BLD_Roof.Query();
                roofQuery.Building_RefID = Parameter.RES_BLD_BuildingID;
                roofQuery.Tenant_RefID   = securityTicket.TenantID;
                roofQuery.IsDeleted      = false;
                List <ORM_RES_BLD_Roof> roofList = ORM_RES_BLD_Roof.Query.Search(Connection, Transaction, roofQuery);

                if (roofList.Count > Parameter.roofCount)
                {
                    int counts = roofList.Count - Parameter.roofCount;
                    for (int i = 0; i < counts; i++)
                    {
                        ORM_RES_BLD_Roof deleteRoof = roofList[i];
                        deleteRoof.Remove(Connection, Transaction);
                    }
                }
                else if (roofList.Count < Parameter.roofCount)
                {
                    int counts = Parameter.roofCount - roofList.Count;
                    for (int i = 0; i < counts; i++)
                    {
                        ORM_RES_BLD_Roof newRoof = new ORM_RES_BLD_Roof();
                        newRoof.Building_RefID = building.RES_BLD_BuildingID;
                        newRoof.Tenant_RefID   = securityTicket.TenantID;
                        newRoof.Save(Connection, Transaction);
                    }
                }

                ORM_RES_BLD_Attic.Query atticsQuery = new ORM_RES_BLD_Attic.Query();
                atticsQuery.Building_RefID = Parameter.RES_BLD_BuildingID;
                atticsQuery.Tenant_RefID   = securityTicket.TenantID;
                atticsQuery.IsDeleted      = false;
                List <ORM_RES_BLD_Attic> atticsList = ORM_RES_BLD_Attic.Query.Search(Connection, Transaction, atticsQuery);

                if (atticsList.Count > Parameter.atticsCount)
                {
                    int counts = atticsList.Count - Parameter.atticsCount;
                    for (int i = 0; i < counts; i++)
                    {
                        ORM_RES_BLD_Attic deleteAttic = atticsList[i];
                        deleteAttic.Remove(Connection, Transaction);
                    }
                }
                else if (atticsList.Count < Parameter.atticsCount)
                {
                    int counts = Parameter.atticsCount - atticsList.Count;
                    for (int i = 0; i < counts; i++)
                    {
                        ORM_RES_BLD_Attic newAttic = new ORM_RES_BLD_Attic();
                        newAttic.Building_RefID = building.RES_BLD_BuildingID;
                        newAttic.Tenant_RefID   = securityTicket.TenantID;
                        newAttic.Save(Connection, Transaction);
                    }
                }

                ORM_RES_BLD_Basement.Query basementQuery = new ORM_RES_BLD_Basement.Query();
                basementQuery.Building_RefID = Parameter.RES_BLD_BuildingID;
                basementQuery.Tenant_RefID   = securityTicket.TenantID;
                basementQuery.IsDeleted      = false;
                List <ORM_RES_BLD_Basement> basementList = ORM_RES_BLD_Basement.Query.Search(Connection, Transaction, basementQuery);

                if (basementList.Count > Parameter.basementsCount)
                {
                    int counts = basementList.Count - Parameter.basementsCount;
                    for (int i = 0; i < counts; i++)
                    {
                        ORM_RES_BLD_Basement deleteBasement = basementList[i];
                        deleteBasement.Remove(Connection, Transaction);
                    }
                }
                else if (basementList.Count < Parameter.basementsCount)
                {
                    int counts = Parameter.basementsCount - basementList.Count;
                    for (int i = 0; i < counts; i++)
                    {
                        ORM_RES_BLD_Basement newBasement = new ORM_RES_BLD_Basement();
                        newBasement.Building_RefID = building.RES_BLD_BuildingID;
                        newBasement.Tenant_RefID   = securityTicket.TenantID;
                        newBasement.Save(Connection, Transaction);
                    }
                }

                ORM_RES_BLD_HVACR.Query hvacrQuery = new ORM_RES_BLD_HVACR.Query();
                hvacrQuery.Building_RefID = Parameter.RES_BLD_BuildingID;
                hvacrQuery.Tenant_RefID   = securityTicket.TenantID;
                hvacrQuery.IsDeleted      = false;
                List <ORM_RES_BLD_HVACR> hvacrList = ORM_RES_BLD_HVACR.Query.Search(Connection, Transaction, hvacrQuery);

                if (hvacrList.Count > Parameter.hvarcsCount)
                {
                    int counts = hvacrList.Count - Parameter.hvarcsCount;
                    for (int i = 0; i < counts; i++)
                    {
                        ORM_RES_BLD_HVACR deleteHvacr = hvacrList[i];
                        deleteHvacr.Remove(Connection, Transaction);
                    }
                }
                else if (hvacrList.Count < Parameter.hvarcsCount)
                {
                    int counts = Parameter.hvarcsCount - hvacrList.Count;
                    for (int i = 0; i < counts; i++)
                    {
                        ORM_RES_BLD_HVACR newHvacr = new ORM_RES_BLD_HVACR();
                        newHvacr.Building_RefID = building.RES_BLD_BuildingID;
                        newHvacr.Tenant_RefID   = securityTicket.TenantID;
                        newHvacr.Save(Connection, Transaction);
                    }
                }
            }

            returnValue.Result = building.RES_BLD_BuildingID;

            //Put your code here
            return(returnValue);

            #endregion UserCode
        }
示例#2
0
        protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L5OM_SM_0951 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_Guid();

            var doctorQuery = new ORM_HEC_Doctor.Query();
            doctorQuery.HEC_DoctorID = Parameter.Doctor_ID;
            var doctor = ORM_HEC_Doctor.Query.Search(Connection, Transaction, doctorQuery).First();

            var practicesQuery = new ORM_HEC_MedicalPractis.Query();
            practicesQuery.HEC_MedicalPractiseID = Parameter.Practice_ID;
            var practices = ORM_HEC_MedicalPractis.Query.Search(Connection, Transaction, practicesQuery).First();

            var companyInfoQuery = new ORM_CMN_COM_CompanyInfo.Query();
            companyInfoQuery.CMN_COM_CompanyInfoID = practices.Ext_CompanyInfo_RefID;
            var companyInfo = ORM_CMN_COM_CompanyInfo.Query.Search(Connection, Transaction, companyInfoQuery).First();

            var bParticipantQuery = new ORM_CMN_BPT_BusinessParticipant.Query();
            bParticipantQuery.IfCompany_CMN_COM_CompanyInfo_RefID = companyInfo.CMN_COM_CompanyInfoID;
            var practice_bParticipant = ORM_CMN_BPT_BusinessParticipant.Query.Search(Connection, Transaction, bParticipantQuery).FirstOrDefault();

            ORM_CMN_BPT_Memo memo = new ORM_CMN_BPT_Memo();
            if (Parameter.CMN_BPT_MemoID != Guid.Empty)
            {
                var result = memo.Load(Connection, Transaction, Parameter.CMN_BPT_MemoID);
                if (result.Status != FR_Status.Success || memo.CMN_BPT_MemoID == Guid.Empty)
                {
                    var error = new FR_Guid();
                    error.ErrorMessage = "No Such ID";
                    error.Status       = FR_Status.Error_Internal;
                    return(error);
                }
                memo.UpdatedBy_Account_RefID = securityTicket.AccountID;
                memo.UpdatedOn = Parameter.Creation_Timestamp;
            }
            else
            {
                ORM_DOC_Structure_Header docHeader = new ORM_DOC_Structure_Header();
                docHeader.Label        = Parameter.Memo_Abbreviation + "_Header_Label";
                docHeader.Tenant_RefID = securityTicket.TenantID;
                docHeader.Save(Connection, Transaction);

                ORM_DOC_Structure docStructure = new ORM_DOC_Structure();
                docStructure.Label                  = Parameter.Memo_Abbreviation + "_Structure";
                docStructure.Tenant_RefID           = securityTicket.TenantID;
                docStructure.Structure_Header_RefID = docHeader.DOC_Structure_HeaderID;
                docStructure.Save(Connection, Transaction);

                memo.DocumentStructureHeader_RefID = docHeader.DOC_Structure_HeaderID;
                memo.CreatedBy_Account_RefID       = securityTicket.AccountID;
                memo.Creation_Timestamp            = Parameter.Creation_Timestamp;
                memo.UpdatedOn = memo.Creation_Timestamp;
            }

            memo.Memo_Text         = Parameter.Memo_Text;
            memo.Memo_Title        = Parameter.Memo_Title;
            memo.Memo_Abbreviation = Parameter.Memo_Abbreviation;
            memo.Tenant_RefID      = securityTicket.TenantID;
            memo.Save(Connection, Transaction);

            if (Parameter.AdditionalFields != null)
            {
                foreach (var AdditionalField in Parameter.AdditionalFields)
                {
                    ORM_CMN_BPT_Memo_AdditionalField addFieldItem = new ORM_CMN_BPT_Memo_AdditionalField();
                    if (AdditionalField.CMN_BPT_Memo_AdditionalFieldID != Guid.Empty)
                    {
                        var result = addFieldItem.Load(Connection, Transaction, AdditionalField.CMN_BPT_Memo_AdditionalFieldID);
                        if (result.Status != FR_Status.Success || addFieldItem.CMN_BPT_Memo_AdditionalFieldID == Guid.Empty)
                        {
                            var error = new FR_Guid();
                            error.ErrorMessage = "No Such ID";
                            error.Status       = FR_Status.Error_Internal;
                            return(error);
                        }
                    }
                    addFieldItem.Memo_RefID   = memo.CMN_BPT_MemoID;
                    addFieldItem.Field_Key    = AdditionalField.Field_Key;
                    addFieldItem.Field_Value  = AdditionalField.Field_Value;
                    addFieldItem.Tenant_RefID = securityTicket.TenantID;
                    addFieldItem.Save(Connection, Transaction);
                }
            }
            var memo2DocQuery = new ORM_CMN_BPT_Memo_RelatedParticipant.Query();
            memo2DocQuery.CMN_BPT_Memo_RefID = memo.CMN_BPT_MemoID;
            memo2DocQuery.CMN_BPT_Memo_RelatedParticipantID = doctor.BusinessParticipant_RefID;
            var memo2DocQueryRes = ORM_CMN_BPT_Memo_RelatedParticipant.Query.Search(Connection, Transaction, memo2DocQuery).FirstOrDefault();
            ORM_CMN_BPT_Memo_RelatedParticipant memo2Doc;
            if (memo2DocQueryRes != null)
            {
                memo2Doc = memo2DocQueryRes;
            }
            else
            {
                memo2Doc = new ORM_CMN_BPT_Memo_RelatedParticipant();
                memo2Doc.CMN_BPT_Memo_RelatedParticipantID = Guid.NewGuid();
            }
            memo2Doc.Tenant_RefID       = securityTicket.TenantID;
            memo2Doc.CMN_BPT_Memo_RefID = memo.CMN_BPT_MemoID;
            memo2Doc.CMN_BPT_BusinessParticipant_RefID = doctor.BusinessParticipant_RefID;
            memo2Doc.Save(Connection, Transaction);



            var memo2PracticeQuery = new ORM_CMN_BPT_Memo_RelatedParticipant.Query();
            memo2DocQuery.CMN_BPT_Memo_RefID = memo.CMN_BPT_MemoID;
            memo2DocQuery.CMN_BPT_Memo_RelatedParticipantID = practice_bParticipant.CMN_BPT_BusinessParticipantID;
            var memo2PracticeQueryRes = ORM_CMN_BPT_Memo_RelatedParticipant.Query.Search(Connection, Transaction, memo2DocQuery).FirstOrDefault();
            ORM_CMN_BPT_Memo_RelatedParticipant memo2Practice;
            if (memo2DocQueryRes != null)
            {
                memo2Practice = memo2DocQueryRes;
            }
            else
            {
                memo2Practice = new ORM_CMN_BPT_Memo_RelatedParticipant();
                memo2Practice.CMN_BPT_Memo_RelatedParticipantID = Guid.NewGuid();
            }
            memo2Practice.Tenant_RefID       = securityTicket.TenantID;
            memo2Practice.CMN_BPT_Memo_RefID = memo.CMN_BPT_MemoID;
            memo2Practice.CMN_BPT_BusinessParticipant_RefID = practice_bParticipant.CMN_BPT_BusinessParticipantID;
            memo2Practice.Save(Connection, Transaction);


            returnValue.Result = memo.CMN_BPT_MemoID;

            return(returnValue);

            #endregion UserCode
        }
示例#3
0
        protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L5PR_SP_1614 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_Guid();

            var languageQuery = new ORM_CMN_Language.Query();
            languageQuery.Tenant_RefID = securityTicket.TenantID;
            languageQuery.IsDeleted    = false;
            var languages = ORM_CMN_Language.Query.Search(Connection, Transaction, languageQuery);

            var product = new ORM_CMN_PRO_Product();

            if (Parameter.ProductID == Guid.Empty)
            {
                #region ORM_CMN_PRO_Product

                product = new ORM_CMN_PRO_Product();
                product.CMN_PRO_ProductID                    = Guid.NewGuid();
                product.ProductITL                           = String.Empty;
                product.IsCustomizable                       = Parameter.IsCustomizable;
                product.IsProduct_Article                    = true;
                product.IsProductAvailableForOrdering        = true;
                product.IsImportedFromExternalCatalog        = false;
                product.IsProductForInternalDistributionOnly = Parameter.IsProductForInternalDistribution;
                if (Parameter.CatalogRefID != null && Parameter.CatalogRefID != Guid.Empty)
                {
                    product.IfImportedFromExternalCatalog_CatalogSubscription_RefID = Parameter.CatalogRefID;
                }
                product.Product_Name        = new Dict(ORM_CMN_PRO_Product.TableName);
                product.Product_Description = new Dict(ORM_CMN_PRO_Product.TableName);

                product.PackageInfo_RefID = Guid.NewGuid();

                product.Creation_Timestamp = DateTime.Now;
                product.Tenant_RefID       = securityTicket.TenantID;
                product.IsDeleted          = Parameter.IsDeleted;



                product.Save(Connection, Transaction);

                #endregion
            }
            else
            {
                product.Load(Connection, Transaction, Parameter.ProductID);
            }
            if (Parameter.Document_ID != null && Parameter.Document_ID != Guid.Empty)
            {
                ORM_DOC_Structure_Header structureHeader = new ORM_DOC_Structure_Header();
                if (Parameter.DocumentStructureHeaderID == Guid.Empty)
                {
                    structureHeader.Label        = "Product picture";
                    structureHeader.Tenant_RefID = securityTicket.TenantID;
                    structureHeader.Save(Connection, Transaction);
                    product.Product_DocumentationStructure_RefID = structureHeader.DOC_Structure_HeaderID;
                }
                ORM_DOC_Structure structure = new ORM_DOC_Structure();
                if (Parameter.DocumentStructureHeaderID == Guid.Empty)
                {
                    structure.Label = "Product picture";
                    structure.Structure_Header_RefID  = structureHeader.DOC_Structure_HeaderID;
                    structure.CreatedBy_Account_RefID = securityTicket.AccountID;
                    structure.Tenant_RefID            = securityTicket.TenantID;
                    structure.Save(Connection, Transaction);
                }
                ORM_DOC_Document document = new ORM_DOC_Document();
                document.DOC_DocumentID = Parameter.Document_ID;
                document.Tenant_RefID   = securityTicket.TenantID;
                document.Save(Connection, Transaction);
                var documentStructureID = structure.DOC_StructureID;
                var assignmentID        = Guid.Empty;
                List <ORM_DOC_Document_2_Structure> existingDocumentStructure = new List <ORM_DOC_Document_2_Structure>();
                if (Parameter.DocumentStructureHeaderID != Guid.Empty)
                {
                    existingDocumentStructure = ORM_DOC_Document_2_Structure.Query.Search(Connection, Transaction, new ORM_DOC_Document_2_Structure.Query()
                    {
                        StructureHeader_RefID = Parameter.DocumentStructureHeaderID
                    });
                }
                ORM_DOC_Document_2_Structure documentStructure = new ORM_DOC_Document_2_Structure();
                if (existingDocumentStructure != null && existingDocumentStructure.Count() > 0)
                {
                    existingDocumentStructure.First().Document_RefID = document.DOC_DocumentID;
                    existingDocumentStructure.First().Save(Connection, Transaction);
                }
                else
                {
                    documentStructure.Document_RefID        = document.DOC_DocumentID;
                    documentStructure.Structure_RefID       = documentStructureID;
                    documentStructure.StructureHeader_RefID = structure.Structure_Header_RefID;
                    documentStructure.Tenant_RefID          = securityTicket.TenantID;
                    documentStructure.Save(Connection, Transaction);
                }
            }

            #region ORM_CMN_PRO_Product

            product.Product_Number = Parameter.ProductNumber;

            foreach (var language in languages)
            {
                product.Product_Name.UpdateEntry(language.CMN_LanguageID, Parameter.ProductName);
                product.Product_Description.UpdateEntry(language.CMN_LanguageID, Parameter.Description);
            }

            product.ProductType_RefID = Guid.Empty;

            product.IsPlaceholderArticle   = Parameter.IsDummy;
            product.IsCustomizable         = Parameter.IsCustomizable;
            product.ProductSuccessor_RefID = Guid.Empty;
            product.IsDeleted = Parameter.IsDeleted;
            product.Save(Connection, Transaction);



            #endregion

            #region Variant
            //Create default varient
            var defaultVarient = new ORM_CMN_PRO_Product_Variant();
            defaultVarient.CMN_PRO_Product_VariantID = Guid.NewGuid();
            defaultVarient.CMN_PRO_Product_RefID     = product.CMN_PRO_ProductID;
            defaultVarient.IsStandardProductVariant  = true;
            defaultVarient.Tenant_RefID = securityTicket.TenantID;
            defaultVarient.VariantName  = new Dict(ORM_CMN_PRO_Product_Variant.TableName);


            foreach (var language in languages)
            {
                defaultVarient.VariantName.UpdateEntry(language.CMN_LanguageID, String.Empty);
            }

            defaultVarient.Save(Connection, Transaction);
            #endregion

            #region Customization
            if (Parameter.IsCustomizable == false && Parameter.ProductID != Guid.Empty)
            {
                var customizations = ORM_CMN_PRO_CUS_Customization.Query.Search(Connection, Transaction, new ORM_CMN_PRO_CUS_Customization.Query()
                {
                    Product_RefID = Parameter.ProductID
                });
                foreach (var customization in customizations)
                {
                    ORM_CMN_PRO_CUS_Customization_Variant.Query.SoftDelete(Connection, Transaction, new ORM_CMN_PRO_CUS_Customization_Variant.Query()
                    {
                        Customization_RefID = customization.CMN_PRO_CUS_CustomizationID
                    });
                }
                ORM_CMN_PRO_CUS_Customization.Query.SoftDelete(Connection, Transaction, new ORM_CMN_PRO_CUS_Customization.Query()
                {
                    Product_RefID = Parameter.ProductID
                });
            }
            #endregion

            returnValue.Result = product.CMN_PRO_ProductID;
            return(returnValue);

            #endregion UserCode
        }
示例#4
0
        protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L3SPFT_SPN_1100 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_Guid();

            var item = new ORM_TMS_PRO_Project();
            if (Parameter.TMS_PRO_ProjectID != Guid.Empty)
            {
                item.Load(Connection, Transaction, Parameter.TMS_PRO_ProjectID);
            }

            if (Parameter.IsDeleted == true)
            {
                ORM_TMS_PRO_Project.Query query = new ORM_TMS_PRO_Project.Query();
                query.TMS_PRO_ProjectID = item.TMS_PRO_ProjectID;
                item.IsDeleted          = true;
                ORM_TMS_PRO_Project.Query.SoftDelete(Connection, Transaction, query);


                #region Delete ORM_TMS_PRO_BusinessTask
                ORM_TMS_PRO_BusinessTask.Query ORM_TMS_PRO_BusinessTaskquery = new ORM_TMS_PRO_BusinessTask.Query();
                ORM_TMS_PRO_BusinessTaskquery.Project_RefID = Parameter.TMS_PRO_ProjectID;
                ORM_TMS_PRO_BusinessTaskquery.IsArchived    = false;
                ORM_TMS_PRO_BusinessTaskquery.IsDeleted     = false;
                ORM_TMS_PRO_BusinessTask.Query.SoftDelete(Connection, Transaction, ORM_TMS_PRO_BusinessTaskquery);

                #endregion

                #region Delete ORM_TMS_PRO_BusinessTaskPackage

                ORM_TMS_PRO_BusinessTaskPackage.Query ORM_TMS_PRO_BusinessTaskPackagequery = new ORM_TMS_PRO_BusinessTaskPackage.Query();
                ORM_TMS_PRO_BusinessTaskPackagequery.Project_RefID = Parameter.TMS_PRO_ProjectID;
                ORM_TMS_PRO_BusinessTaskPackagequery.IsDeleted     = false;

                ORM_TMS_PRO_BusinessTaskPackage.Query.SoftDelete(Connection, Transaction, ORM_TMS_PRO_BusinessTaskPackagequery);


                #endregion

                #region Delete ORM_TMS_PRO_ProjectMember

                var ORM_TMS_PRO_ProjectMemberquery = new ORM_TMS_PRO_ProjectMember.Query();
                ORM_TMS_PRO_ProjectMemberquery.IsDeleted     = true;
                ORM_TMS_PRO_ProjectMemberquery.Project_RefID = Parameter.TMS_PRO_ProjectID;

                ORM_TMS_PRO_ProjectMember.Query.SoftDelete(Connection, Transaction, ORM_TMS_PRO_ProjectMemberquery);

                #endregion

                #region Delete ORM_TMS_PRO_BussinessTask_2_Feature
                var ORM_TMS_PRO_BussinessTask_2_Featurequery = new ORM_TMS_PRO_BusinessTask_2_Feature.Query();
                ORM_TMS_PRO_BussinessTask_2_Featurequery.Feature_RefID = Parameter.TMS_PRO_ProjectID;
                ORM_TMS_PRO_BussinessTask_2_Featurequery.IsDeleted     = true;
                ORM_TMS_PRO_BusinessTask_2_Feature.Query.SoftDelete(Connection, Transaction, ORM_TMS_PRO_BussinessTask_2_Featurequery);

                #endregion

                #region Delete ORM_TMS_PRO_Features
                var ORM_TMS_PRO_Featuresquery = new ORM_TMS_PRO_Feature.Query();
                ORM_TMS_PRO_Featuresquery.TMS_PRO_FeatureID = Parameter.TMS_PRO_ProjectID;
                ORM_TMS_PRO_Featuresquery.IsDeleted         = true;
                ORM_TMS_PRO_Feature.Query.SoftDelete(Connection, Transaction, ORM_TMS_PRO_Featuresquery);

                #endregion
                #region Delete ORM_TMS_DeveloperTasks
                var ORM_TMS_Developertaskquery = new ORM_TMS_PRO_DeveloperTask.Query();
                ORM_TMS_Developertaskquery.TMS_PRO_DeveloperTaskID = Parameter.TMS_PRO_ProjectID;
                ORM_TMS_Developertaskquery.IsDeleted = true;
                ORM_TMS_PRO_DeveloperTask.Query.SoftDelete(Connection, Transaction, ORM_TMS_Developertaskquery);
                #endregion
                return(returnValue);
            }

            if (Parameter.IsArchived == true)
            {
                #region archive Project
                //ORM_TMS_PRO_Project.Query searchQueryProject = new ORM_TMS_PRO_Project.Query();
                //searchQueryProject.TMS_PRO_ProjectID = item.TMS_PRO_ProjectID;
                //searchQueryProject.IsArchived = false;

                //ORM_TMS_PRO_Project.Query updateQueryProject = new ORM_TMS_PRO_Project.Query();
                //updateQueryProject.TMS_PRO_ProjectID = item.TMS_PRO_ProjectID;
                //updateQueryProject.IsArchived = true;

                //ORM_TMS_PRO_Project.Query.Update(Connection, Transaction, searchQueryProject, updateQueryProject);
                var project = ORM_TMS_PRO_Project.Query.Search(Connection, Transaction, new ORM_TMS_PRO_Project.Query()
                {
                    Tenant_RefID      = securityTicket.TenantID,
                    IsDeleted         = false,
                    TMS_PRO_ProjectID = Parameter.TMS_PRO_ProjectID
                }).Single();
                project.IsArchived = true;
                project.Save(Connection, Transaction);

                #endregion

                #region archive ORM_TMS_PRO_BusinessTask

                //ORM_TMS_PRO_BusinessTask.Query searchQueryBusinessTask = new ORM_TMS_PRO_BusinessTask.Query();
                //searchQueryBusinessTask.Project_RefID= item.TMS_PRO_ProjectID;
                //searchQueryBusinessTask.IsArchived = false;

                //ORM_TMS_PRO_BusinessTask.Query updateQueryBusinessTask = new ORM_TMS_PRO_BusinessTask.Query();
                //updateQueryBusinessTask.Project_RefID = item.TMS_PRO_ProjectID;
                //updateQueryBusinessTask.IsArchived = true;

                //ORM_TMS_PRO_BusinessTask.Query.Update(Connection, Transaction, searchQueryBusinessTask, updateQueryBusinessTask);

                var businesstaskList = ORM_TMS_PRO_BusinessTask.Query.Search(Connection, Transaction, new ORM_TMS_PRO_BusinessTask.Query()
                {
                    Tenant_RefID  = securityTicket.TenantID,
                    IsDeleted     = false,
                    Project_RefID = Parameter.TMS_PRO_ProjectID
                });

                foreach (var businesstaskitem in businesstaskList)
                {
                    businesstaskitem.IsArchived = true;
                    businesstaskitem.Save(Connection, Transaction);
                }

                #endregion

                #region archive ORM_TMS_PRO_Features

                //ORM_TMS_PRO_Feature.Query searchQueryFeature = new ORM_TMS_PRO_Feature.Query();
                //searchQueryFeature.Project_RefID = item.TMS_PRO_ProjectID;
                //searchQueryFeature.IsArchived = false;

                //ORM_TMS_PRO_Feature.Query updateQueryFeature = new ORM_TMS_PRO_Feature.Query();
                //updateQueryFeature.Project_RefID = item.TMS_PRO_ProjectID;
                //updateQueryFeature.IsArchived = true;

                //ORM_TMS_PRO_Feature.Query.Update(Connection, Transaction, searchQueryFeature, updateQueryFeature);

                var featureList = ORM_TMS_PRO_Feature.Query.Search(Connection, Transaction, new ORM_TMS_PRO_Feature.Query()
                {
                    Tenant_RefID  = securityTicket.TenantID,
                    IsDeleted     = false,
                    Project_RefID = Parameter.TMS_PRO_ProjectID
                });

                foreach (var feature in featureList)
                {
                    feature.IsArchived = true;
                    feature.Save(Connection, Transaction);
                }


                #endregion

                #region archive ORM_TMS_DeveloperTasks

                var devTaskList = ORM_TMS_PRO_DeveloperTask.Query.Search(Connection, Transaction, new ORM_TMS_PRO_DeveloperTask.Query()
                {
                    Tenant_RefID  = securityTicket.TenantID,
                    Project_RefID = item.TMS_PRO_ProjectID,
                    IsDeleted     = false
                });
                foreach (var devTask in devTaskList)
                {
                    devTask.IsArchived = true;
                    devTask.Save(Connection, Transaction);
                }
                //ORM_TMS_PRO_DeveloperTask.Query searchQueryDeveloperTask = new ORM_TMS_PRO_DeveloperTask.Query();
                //searchQueryDeveloperTask.Project_RefID = item.TMS_PRO_ProjectID;
                //searchQueryDeveloperTask.IsArchived = false;

                //ORM_TMS_PRO_DeveloperTask.Query updateQueryDeveloperTask = new ORM_TMS_PRO_DeveloperTask.Query();
                //updateQueryDeveloperTask.Project_RefID = item.TMS_PRO_ProjectID;
                //updateQueryDeveloperTask.IsArchived = true;

                //ORM_TMS_PRO_DeveloperTask.Query.Update(Connection, Transaction, searchQueryDeveloperTask, updateQueryDeveloperTask);
                #endregion
            }

            if (Parameter.TMS_PRO_ProjectID == Guid.Empty)
            {
                item.TMS_PRO_ProjectID = Guid.NewGuid();

                #region Define Documents

                var structureHeader = new ORM_DOC_Structure_Header();
                structureHeader.DOC_Structure_HeaderID = Guid.NewGuid();
                structureHeader.Label        = Parameter.Name_DictID.Contents.FirstOrDefault().Content;
                structureHeader.Tenant_RefID = securityTicket.TenantID;
                var structureStatusSave = structureHeader.Save(Connection, Transaction);

                item.DOC_Structure_Header_RefID = structureHeader.DOC_Structure_HeaderID;

                #endregion

                #region ORM_TMS_PRO_ProjectMember

                #region ProjectMemberID

                String gpmProjectMember = EnumUtils.GetEnumDescription(ERightsPackage.ProjectMember);

                var parameter = new P_L2RP_GRPfGPM_1150();
                parameter.GlobalPropertyMatchingID = gpmProjectMember;

                var projectMemberID = cls_Get_RightPackage_for_GlobalPropertyMatchingID.Invoke(Connection, Transaction, parameter, securityTicket).Result;

                #endregion

                #region ProjectManagerID

                String gpmProjectManager = EnumUtils.GetEnumDescription(ERightsPackage.ProjectManager);

                parameter = new P_L2RP_GRPfGPM_1150();
                parameter.GlobalPropertyMatchingID = gpmProjectManager;

                var projectManagerID = cls_Get_RightPackage_for_GlobalPropertyMatchingID.Invoke(Connection, Transaction, parameter, securityTicket).Result;

                #endregion

                var projectMember = new ORM_TMS_PRO_ProjectMember();

                projectMember.Project_RefID     = item.TMS_PRO_ProjectID;
                projectMember.USR_Account_RefID = securityTicket.AccountID;
                projectMember.IsDeleted         = false;
                projectMember.Tenant_RefID      = securityTicket.TenantID;
                projectMember.IsOwner           = true;
                projectMember.Save(Connection, Transaction);

                ORM_TMS_PRO_Members_2_RightPackage assignment_member = new ORM_TMS_PRO_Members_2_RightPackage();
                assignment_member.ACC_RightsPackage_RefID = projectMemberID.TMS_PRO_ACC_RightsPackageID;
                assignment_member.ProjectMember_RefID     = projectMember.TMS_PRO_ProjectMemberID;
                assignment_member.IsDeleted    = false;
                assignment_member.Tenant_RefID = securityTicket.TenantID;
                assignment_member.Save(Connection, Transaction);

                ORM_TMS_PRO_Members_2_RightPackage assignment_manager = new ORM_TMS_PRO_Members_2_RightPackage();
                assignment_manager.ACC_RightsPackage_RefID = projectManagerID.TMS_PRO_ACC_RightsPackageID;
                assignment_manager.ProjectMember_RefID     = projectMember.TMS_PRO_ProjectMemberID;
                assignment_manager.IsDeleted    = false;
                assignment_manager.Tenant_RefID = securityTicket.TenantID;
                assignment_manager.Save(Connection, Transaction);
                #endregion

                item.Tenant_RefID = securityTicket.TenantID;
            }
            if (Parameter.Name_DictID != null)
            {
                item.Name = Parameter.Name_DictID;
            }
            if (Parameter.Description_DictID != null)
            {
                item.Description = Parameter.Description_DictID;
            }
            if (Parameter.Status_RefID != null)
            {
                item.Status_RefID = Parameter.Status_RefID;
            }
            if (Parameter.Color != null)
            {
                item.Color = Parameter.Color;
            }



            return(new FR_Guid(item.Save(Connection, Transaction), item.TMS_PRO_ProjectID));

            #endregion UserCode
        }
示例#5
0
        protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L5AR_SA_1614 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_Guid();

            var languageQuery = new ORM_CMN_Language.Query();
            languageQuery.Tenant_RefID = securityTicket.TenantID;
            languageQuery.IsDeleted    = false;
            var languages = ORM_CMN_Language.Query.Search(Connection, Transaction, languageQuery);

            var product = new ORM_CMN_PRO_Product();

            if (Parameter.ArticleID == Guid.Empty)
            {
                #region ORM_CMN_PRO_Product

                product = new ORM_CMN_PRO_Product();
                product.CMN_PRO_ProductID = Guid.NewGuid();
                product.ProductITL        = Guid.NewGuid().ToString();

                product.IsProduct_Article             = true;
                product.IsProductAvailableForOrdering = true;
                product.IsImportedFromExternalCatalog = false;

                product.Product_Name        = new Dict(ORM_CMN_PRO_Product.TableName);
                product.Product_Description = new Dict(ORM_CMN_PRO_Product.TableName);

                product.PackageInfo_RefID = Guid.NewGuid();

                product.Creation_Timestamp = DateTime.Now;
                product.Tenant_RefID       = securityTicket.TenantID;
                product.IsDeleted          = Parameter.IsDeleted;


                #region Product picture

                if (Parameter.Image != null && Parameter.Image.Document_ID != Guid.Empty)
                {
                    ORM_DOC_Structure_Header structureHeader = new ORM_DOC_Structure_Header();
                    structureHeader.Label        = "Product picture";
                    structureHeader.Tenant_RefID = securityTicket.TenantID;
                    structureHeader.Save(Connection, Transaction);

                    ORM_DOC_Structure structure = new ORM_DOC_Structure();
                    structure.Label = "Product picture";
                    structure.Structure_Header_RefID  = structureHeader.DOC_Structure_HeaderID;
                    structure.CreatedBy_Account_RefID = securityTicket.AccountID;
                    structure.Tenant_RefID            = securityTicket.TenantID;
                    structure.Save(Connection, Transaction);

                    ORM_DOC_Document document = new ORM_DOC_Document();
                    document.DOC_DocumentID = Parameter.Image.Document_ID;
                    document.Tenant_RefID   = securityTicket.TenantID;
                    document.Save(Connection, Transaction);

                    ORM_DOC_Document_2_Structure documentStructure = new ORM_DOC_Document_2_Structure();
                    documentStructure.Document_RefID        = document.DOC_DocumentID;
                    documentStructure.Structure_RefID       = structure.DOC_StructureID;
                    documentStructure.StructureHeader_RefID = structureHeader.DOC_Structure_HeaderID;
                    documentStructure.Tenant_RefID          = securityTicket.TenantID;
                    documentStructure.Save(Connection, Transaction);

                    ORM_DOC_DocumentRevision documentRevision = new ORM_DOC_DocumentRevision();
                    documentRevision.Document_RefID      = document.DOC_DocumentID;
                    documentRevision.Revision            = 1;
                    documentRevision.IsLocked            = false;
                    documentRevision.IsLastRevision      = true;
                    documentRevision.UploadedByAccount   = securityTicket.AccountID;
                    documentRevision.File_Name           = Parameter.Image.File_Name;
                    documentRevision.File_Description    = Parameter.Image.File_Description;
                    documentRevision.File_SourceLocation = Parameter.Image.File_Source_Location;
                    documentRevision.File_ServerLocation = Parameter.Image.File_Server_Location;
                    documentRevision.File_MIMEType       = Parameter.Image.File_MimeType;
                    documentRevision.File_Extension      = Parameter.Image.File_Extension;
                    documentRevision.File_Size_Bytes     = Parameter.Image.File_Size_Bytes;
                    documentRevision.Tenant_RefID        = securityTicket.TenantID;
                    documentRevision.Save(Connection, Transaction);

                    //add relation for product picture with product
                    product.Product_DocumentationStructure_RefID = structureHeader.DOC_Structure_HeaderID;
                }

                #endregion

                product.Save(Connection, Transaction);

                #endregion
            }
            else
            {
                product.Load(Connection, Transaction, Parameter.ArticleID);

                #region Product picture

                if (Parameter.Image != null && Parameter.Image.Document_ID != Guid.Empty)
                {
                    ORM_DOC_Structure_Header structureHeader = new ORM_DOC_Structure_Header();
                    structureHeader.Label        = "Product picture";
                    structureHeader.Tenant_RefID = securityTicket.TenantID;
                    structureHeader.Save(Connection, Transaction);

                    ORM_DOC_Structure structure = new ORM_DOC_Structure();
                    structure.Label = "Product picture";
                    structure.Structure_Header_RefID  = structureHeader.DOC_Structure_HeaderID;
                    structure.CreatedBy_Account_RefID = securityTicket.AccountID;
                    structure.Tenant_RefID            = securityTicket.TenantID;
                    structure.Save(Connection, Transaction);

                    ORM_DOC_Document document = new ORM_DOC_Document();
                    document.DOC_DocumentID = Parameter.Image.Document_ID;
                    document.Tenant_RefID   = securityTicket.TenantID;
                    document.Save(Connection, Transaction);

                    ORM_DOC_Document_2_Structure documentStructure = new ORM_DOC_Document_2_Structure();
                    documentStructure.Document_RefID        = document.DOC_DocumentID;
                    documentStructure.Structure_RefID       = structure.DOC_StructureID;
                    documentStructure.StructureHeader_RefID = structureHeader.DOC_Structure_HeaderID;
                    documentStructure.Tenant_RefID          = securityTicket.TenantID;
                    documentStructure.Save(Connection, Transaction);

                    ORM_DOC_DocumentRevision documentRevision = new ORM_DOC_DocumentRevision();
                    documentRevision.Document_RefID      = document.DOC_DocumentID;
                    documentRevision.Revision            = 1;
                    documentRevision.IsLocked            = false;
                    documentRevision.IsLastRevision      = true;
                    documentRevision.UploadedByAccount   = securityTicket.AccountID;
                    documentRevision.File_Name           = Parameter.Image.File_Name;
                    documentRevision.File_Description    = Parameter.Image.File_Description;
                    documentRevision.File_SourceLocation = Parameter.Image.File_Source_Location;
                    documentRevision.File_ServerLocation = Parameter.Image.File_Server_Location;
                    documentRevision.File_MIMEType       = Parameter.Image.File_MimeType;
                    documentRevision.File_Extension      = Parameter.Image.File_Extension;
                    documentRevision.File_Size_Bytes     = Parameter.Image.File_Size_Bytes;
                    documentRevision.Tenant_RefID        = securityTicket.TenantID;
                    documentRevision.Save(Connection, Transaction);

                    //add relation for product picture with product
                    product.Product_DocumentationStructure_RefID = structureHeader.DOC_Structure_HeaderID;
                }
                else
                {
                    //  if (Parameter.Image.IsForDeleting)  if product image has to be deleted
                }

                #endregion
            }


            #region ORM_CMN_PRO_Product

            product.Product_Number = Parameter.ProductNumber;

            foreach (var language in languages)
            {
                product.Product_Name.UpdateEntry(language.CMN_LanguageID, Parameter.ArticleName);
                product.Product_Description.UpdateEntry(language.CMN_LanguageID, Parameter.Description);
            }

            product.ProductType_RefID = Guid.Empty;

            product.IsPlaceholderArticle = Parameter.IsDummy;

            product.ProductSuccessor_RefID = Guid.Empty;
            product.IsDeleted = Parameter.IsDeleted;
            product.Save(Connection, Transaction);



            #endregion


            //#region ORM_CMN_PRO_Product_2_ProductCode

            //var product2CodeQuery = new ORM_CMN_PRO_Product_2_ProductCode.Query();
            //product2CodeQuery.CMN_PRO_Product_RefID = product.CMN_PRO_ProductID;
            //product2CodeQuery.Tenant_RefID = securityTicket.TenantID;
            //product2CodeQuery.IsDeleted = false;

            //var productCodeAssignment = ORM_CMN_PRO_Product_2_ProductCode.Query.Search(Connection, Transaction, product2CodeQuery).SingleOrDefault();

            //if (productCodeAssignment == null)
            //{
            //    #region ORM_CMN_PRO_ProductCode
            #region Variant
            //Create default varient
            var defaultVarient = new ORM_CMN_PRO_Product_Variant();
            defaultVarient.CMN_PRO_Product_VariantID = Guid.NewGuid();
            defaultVarient.CMN_PRO_Product_RefID     = product.CMN_PRO_ProductID;
            defaultVarient.IsStandardProductVariant  = true;
            defaultVarient.Tenant_RefID = securityTicket.TenantID;
            defaultVarient.VariantName  = new Dict(ORM_CMN_PRO_Product_Variant.TableName);


            foreach (var language in languages)
            {
                defaultVarient.VariantName.UpdateEntry(language.CMN_LanguageID, String.Empty);
            }

            defaultVarient.Save(Connection, Transaction);
            #endregion

            returnValue.Result = product.CMN_PRO_ProductID;
            return(returnValue);

            #endregion UserCode
        }
示例#6
0
        protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L3QT_SQT_0905 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_Guid();

            var item = new ORM_TMS_QuickTask();
            if (Parameter.TMS_QuickTaskID != Guid.Empty)
            {
                var result = item.Load(Connection, Transaction, Parameter.TMS_QuickTaskID);
                if (result.Status != FR_Status.Success || item.TMS_QuickTaskID == Guid.Empty)
                {
                    var error = new FR_Guid();
                    error.ErrorMessage = "No Such ID";
                    error.Status       = FR_Status.Error_Internal;
                    return(error);
                }
            }

            if (Parameter.IsDeleted == true)
            {
                #region Delete ORM_CMN_BPT_InvestedWorkTime

                var qtinv_query = new ORM_TMS_QuickTask_InvestedWorkTime.Query();
                qtinv_query.TMS_QuickTasks_RefID = item.TMS_QuickTaskID;
                qtinv_query.IsDeleted            = false;

                var qtinv = ORM_TMS_QuickTask_InvestedWorkTime.Query.Search(Connection, Transaction, qtinv_query);

                foreach (var qt in qtinv)
                {
                    qt.IsDeleted = true;
                    qt.Save(Connection, Transaction);

                    var inv_query = new ORM_CMN_BPT_InvestedWorkTime.Query();
                    inv_query.CMN_BPT_InvestedWorkTimeID = qt.CMN_BPT_InvestedWorkTime_RefID;
                    inv_query.IsDeleted = false;

                    ORM_CMN_BPT_InvestedWorkTime.Query.SoftDelete(Connection, Transaction, inv_query);
                }

                #endregion

                item.IsDeleted = true;
                return(new FR_Guid(item.Save(Connection, Transaction), item.TMS_QuickTaskID));
            }

            //Creation specific parameters (Tenant, Account ... )
            if (Parameter.TMS_QuickTaskID == Guid.Empty)
            {
                item.QuickTask_CreatedByAccount_RefID = securityTicket.AccountID;
                item.Tenant_RefID = securityTicket.TenantID;

                #region Define IdentificationNumber

                ORM_TMS_QuickTask.Query query = new ORM_TMS_QuickTask.Query();
                query.Tenant_RefID = securityTicket.TenantID;
                var    count      = ORM_TMS_QuickTask.Query.Search(Connection, Transaction, query).Count() + 1;
                String identifier = "000000" + count.ToString();
                item.IdentificationNumber = identifier.Substring(identifier.Length - 6);

                #endregion


                #region Define DocumentsL3FE_GFIfF_1455

                var structureHeader = new ORM_DOC_Structure_Header();
                structureHeader.DOC_Structure_HeaderID = Guid.NewGuid();

                structureHeader.Label = Parameter.QuickTask_Title.GetContent(Parameter.LanguageID);

                structureHeader.Tenant_RefID = securityTicket.TenantID;
                var structureStatusSave = structureHeader.Save(Connection, Transaction);

                item.QuickTask_DocumentStructureHeader_RefID = structureHeader.DOC_Structure_HeaderID;

                #endregion

                #region BusinessParticipient

                ORM_USR_Account userAcc = new ORM_USR_Account();
                userAcc.Load(Connection, Transaction, securityTicket.AccountID);

                #endregion

                #region Invested work times

                ORM_CMN_BPT_InvestedWorkTime iwt = new ORM_CMN_BPT_InvestedWorkTime();
                iwt.BusinessParticipant_RefID = userAcc.BusinessParticipant_RefID;
                iwt.WorkTime_Source           = "DanuTask - [W" + item.IdentificationNumber + "] " + Parameter.QuickTask_Title.GetContent(Parameter.LanguageID);

                iwt.CMN_BPT_InvestedWorkTimeID  = Guid.NewGuid();
                iwt.WorkTime_Start              = Parameter.QuickTask_StartTime;
                iwt.WorkTime_Amount_min         = (long)Parameter.R_QuickTask_InvestedTime_min;
                iwt.WorkTime_InternalIdentifier = cls_Get_NewInvestedWTimeIdentifier.Invoke(Connection, Transaction, securityTicket).Result.Identifier;
                iwt.Tenant_RefID = securityTicket.TenantID;
                iwt.Save(Connection, Transaction);

                ORM_TMS_QuickTask_InvestedWorkTime qtiwt = new ORM_TMS_QuickTask_InvestedWorkTime();
                qtiwt.CMN_BPT_InvestedWorkTime_RefID = iwt.CMN_BPT_InvestedWorkTimeID;
                qtiwt.Creation_Timestamp             = DateTime.Now;
                qtiwt.Tenant_RefID = securityTicket.TenantID;
                qtiwt.TMS_QuickTask_InvestedWorkTimeID = Guid.NewGuid();
                qtiwt.TMS_QuickTasks_RefID             = item.TMS_QuickTaskID;
                qtiwt.Save(Connection, Transaction);

                #endregion
            }
            else
            {
                var query = new ORM_TMS_QuickTask_InvestedWorkTime.Query();
                query.TMS_QuickTasks_RefID = item.TMS_QuickTaskID;
                query.IsDeleted            = false;

                var result = ORM_TMS_QuickTask_InvestedWorkTime.Query.Search(Connection, Transaction, query).ToArray();

                if (result.Count() == 1)
                {
                    ORM_CMN_BPT_InvestedWorkTime iwt = new ORM_CMN_BPT_InvestedWorkTime();
                    iwt.Load(Connection, Transaction, result[0].CMN_BPT_InvestedWorkTime_RefID);
                    iwt.WorkTime_Source             = "DanuTask - [W" + item.IdentificationNumber + "] " + Parameter.QuickTask_Title.GetContent(Parameter.LanguageID);
                    iwt.WorkTime_Start              = Parameter.QuickTask_StartTime;
                    iwt.WorkTime_Amount_min         = (long)Parameter.R_QuickTask_InvestedTime_min;
                    iwt.WorkTime_InternalIdentifier = cls_Get_NewInvestedWTimeIdentifier.Invoke(Connection, Transaction, securityTicket).Result.Identifier;
                    iwt.Save(Connection, Transaction);
                }
            }

            if (item.QuickTask_StartTime != Parameter.QuickTask_StartTime)
            {
                item.IsManuallyEntered = true;
            }

            if (item.R_QuickTask_InvestedTime_min != Parameter.R_QuickTask_InvestedTime_min)
            {
                item.IsManuallyEntered = true;
            }

            item.QuickTask_Title                = Parameter.QuickTask_Title;
            item.QuickTask_Description          = Parameter.QuickTask_Description;
            item.QuickTask_Type_RefID           = Parameter.QuickTask_Type_RefID;
            item.R_QuickTask_InvestedTime_min   = Parameter.R_QuickTask_InvestedTime_min;
            item.AssignedTo_Project_RefID       = Parameter.AssignedTo_Project_RefID;
            item.AssignedTo_BusinessTask_RefID  = Parameter.AssignedTo_BusinessTask_RefID;
            item.AssignedTo_Feature_RefID       = Parameter.AssignedTo_Feature_RefID;
            item.AssignedTo_DeveloperTask_RefID = Parameter.AssignedTo_DeveloperTask_RefID;
            item.QuickTask_StartTime            = Parameter.QuickTask_StartTime;

            return(new FR_Guid(item.Save(Connection, Transaction), item.TMS_QuickTaskID));

            #endregion UserCode
        }
        protected static FR_Base Execute(DbConnection Connection, DbTransaction Transaction, P_L5AS_SAP_1515 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_Base();

            var defaultLanguages = ORM_CMN_Language.Query.Search(Connection, Transaction, new ORM_CMN_Language.Query
            {
                IsDeleted    = false,
                Tenant_RefID = securityTicket.TenantID
            });
            List <P_L3AS_SAVP_0004> parameterVendorProduct  = new List <P_L3AS_SAVP_0004>();
            List <P_L3AS_SAVV_0040> parameterVendorVariants = new List <P_L3AS_SAVV_0040>();
            #region ImportCatalogProducts
            foreach (var productFromCatalog in Parameter.Products.Where(x => !string.IsNullOrEmpty(x.ProductITL)).ToList())
            {
                P_L5PR_IPfC_1648 importProductFromCatalogParameter = new P_L5PR_IPfC_1648();
                importProductFromCatalogParameter.Product             = new ProductsForImport();
                importProductFromCatalogParameter.Product.CatalogITL  = productFromCatalog.CatalogITL;
                importProductFromCatalogParameter.Product.Code        = productFromCatalog.Code;
                importProductFromCatalogParameter.Product.Custom      = productFromCatalog.Custom;
                importProductFromCatalogParameter.Product.Description = productFromCatalog.Description;
                importProductFromCatalogParameter.Product.Name        = productFromCatalog.Name;
                importProductFromCatalogParameter.Product.LongName    = productFromCatalog.LongName;
                importProductFromCatalogParameter.Product.ProductITL  = productFromCatalog.ProductITL;
                importProductFromCatalogParameter.Product.Variants    = new List <Variant>();
                foreach (var variant in productFromCatalog.Variants)
                {
                    importProductFromCatalogParameter.Product.Variants.Add(variant);
                }
                importProductFromCatalogParameter.Product.Customizations = new List <Customization>();

                if (productFromCatalog.Customizations != null)
                {
                    foreach (var customization in productFromCatalog.Customizations)
                    {
                        importProductFromCatalogParameter.Product.Customizations.Add(customization);
                    }
                }

                importProductFromCatalogParameter.Product.Vat = productFromCatalog.Vat;
                Guid productID = cls_Import_Product_from_Catalog.Invoke(Connection, Transaction, importProductFromCatalogParameter, securityTicket).Result;
                Parameter.Products.Where(x => x.ProductITL == productFromCatalog.ProductITL).ToList().ForEach(x => x.LocalProductID = productID);
            }
            #endregion import

            foreach (var parameterProduct in Parameter.Products)
            {
                ORM_CMN_PRO_Product productDB = new ORM_CMN_PRO_Product();

                #region loadProduct

                productDB.Load(Connection, Transaction, parameterProduct.LocalProductID);

                Guid originalProductId = productDB.CMN_PRO_ProductID;
                #endregion
                P_L3AS_GNoPiAfP_1512 parameterAssortmentProductExists = new P_L3AS_GNoPiAfP_1512();
                parameterAssortmentProductExists.AssortmentID = Parameter.AssortmentID;
                parameterAssortmentProductExists.ProductRefID = originalProductId;
                int numberOfProductsInAssortment = cls_Get_Number_of_Products_in_Assortment_for_ProductID.Invoke(Connection, Transaction, parameterAssortmentProductExists, securityTicket).Result.NumberOfProducts;

                if (numberOfProductsInAssortment == 0)
                {
                    #region SaveProductCopy
                    ORM_CMN_PRO_Product productCopyToCreate = new ORM_CMN_PRO_Product();

                    productCopyToCreate.CMN_PRO_ProductID                    = Guid.NewGuid();
                    productCopyToCreate.ProductITL                           = string.Empty;
                    productCopyToCreate.IsProduct_Article                    = true;
                    productCopyToCreate.IsProductAvailableForOrdering        = true;
                    productCopyToCreate.IsImportedFromExternalCatalog        = false;
                    productCopyToCreate.IsProductForInternalDistributionOnly = true;
                    productCopyToCreate.Product_Name                         = new Dict(ORM_CMN_PRO_Product.TableName);
                    productCopyToCreate.Product_Description                  = new Dict(ORM_CMN_PRO_Product.TableName);
                    productCopyToCreate.PackageInfo_RefID                    = Guid.NewGuid();
                    productCopyToCreate.Creation_Timestamp                   = DateTime.Now;
                    productCopyToCreate.Tenant_RefID                         = securityTicket.TenantID;
                    productCopyToCreate.IsDeleted = false;
                    productCopyToCreate.Save(Connection, Transaction);
                    productCopyToCreate.Product_Number = productDB.Product_Number;
                    foreach (var lang in defaultLanguages)
                    {
                        productCopyToCreate.Product_Name.UpdateEntry(lang.CMN_LanguageID, productDB.Product_Name.Contents.FirstOrDefault().Content);
                        productCopyToCreate.Product_Description.UpdateEntry(lang.CMN_LanguageID, productDB.Product_Description.Contents.FirstOrDefault().Content);
                    }
                    productCopyToCreate.ProductType_RefID      = Guid.Empty;
                    productCopyToCreate.ProductSuccessor_RefID = Guid.Empty;
                    productCopyToCreate.IsDeleted = false;
                    var productDocumentStructureRefID = Guid.NewGuid();
                    if (productDB.Product_DocumentationStructure_RefID != Guid.Empty)
                    {
                        productCopyToCreate.Product_DocumentationStructure_RefID = productDocumentStructureRefID;
                    }
                    productCopyToCreate.Save(Connection, Transaction);
                    #endregion

                    #region copyPicture
                    if (productDB.Product_DocumentationStructure_RefID != Guid.Empty)
                    {
                        var documentStructureHeaders = ORM_DOC_Structure_Header.Query.Search(Connection, Transaction, new ORM_DOC_Structure_Header.Query {
                            DOC_Structure_HeaderID = productDB.Product_DocumentationStructure_RefID
                        });
                        if (documentStructureHeaders != null && documentStructureHeaders.Count() > 0)
                        {
                            var documentStructureHeader = documentStructureHeaders.First();
                            ORM_DOC_Structure_Header docStructureHeaderToCreate = new ORM_DOC_Structure_Header();
                            docStructureHeaderToCreate.DOC_Structure_HeaderID = productDocumentStructureRefID;
                            docStructureHeaderToCreate.IsDeleted    = false;
                            docStructureHeaderToCreate.Label        = documentStructureHeader.Label;
                            docStructureHeaderToCreate.Tenant_RefID = securityTicket.TenantID;
                            docStructureHeaderToCreate.Save(Connection, Transaction);

                            var documentStructures = ORM_DOC_Structure.Query.Search(Connection, Transaction, new ORM_DOC_Structure.Query
                            {
                                Structure_Header_RefID = documentStructureHeader.DOC_Structure_HeaderID
                            });
                            var documentStructureID = Guid.NewGuid();
                            if (documentStructures != null && documentStructures.Count() > 0)
                            {
                                var documentStructure = documentStructures.First();
                                ORM_DOC_Structure structureToCreate = new ORM_DOC_Structure();
                                structureToCreate.Label                   = "Product picture";
                                structureToCreate.DOC_StructureID         = documentStructureID;
                                structureToCreate.Structure_Header_RefID  = docStructureHeaderToCreate.DOC_Structure_HeaderID;
                                structureToCreate.CreatedBy_Account_RefID = securityTicket.AccountID;
                                structureToCreate.Tenant_RefID            = securityTicket.TenantID;
                                structureToCreate.Save(Connection, Transaction);

                                var document2DocumentStructures = ORM_DOC_Document_2_Structure.Query.Search(Connection, Transaction, new ORM_DOC_Document_2_Structure.Query
                                {
                                    Structure_RefID = documentStructure.DOC_StructureID
                                });

                                if (document2DocumentStructures != null && document2DocumentStructures.Count() > 0)
                                {
                                    var document2DocumentStructure = document2DocumentStructures.First();

                                    var documentService = InfrastructureFactory.CreateDocumentService();
                                    var webClient       = new WebClient();
                                    var imageBytes      = webClient.DownloadData(documentService.GenerateDownloadLink(document2DocumentStructure.Document_RefID));

                                    var documentID = documentService.UploadDocument(imageBytes, productCopyToCreate.Product_Number, securityTicket.SessionTicket, null, null);
                                    ORM_DOC_Document documentToCreate = new ORM_DOC_Document();
                                    documentToCreate.DOC_DocumentID = documentID;
                                    documentToCreate.Tenant_RefID   = securityTicket.TenantID;
                                    documentToCreate.Save(Connection, Transaction);


                                    ORM_DOC_Document_2_Structure documentStructureToSave = new ORM_DOC_Document_2_Structure();
                                    documentStructureToSave.Document_RefID        = documentToCreate.DOC_DocumentID;
                                    documentStructureToSave.Structure_RefID       = structureToCreate.DOC_StructureID;
                                    documentStructureToSave.StructureHeader_RefID = docStructureHeaderToCreate.DOC_Structure_HeaderID;
                                    documentStructureToSave.Tenant_RefID          = securityTicket.TenantID;
                                    documentStructureToSave.Save(Connection, Transaction);
                                }
                            }
                        }
                    }

                    #endregion



                    var dimensionsDb = ORM_CMN_PRO_Dimension.Query.Search(Connection, Transaction, new ORM_CMN_PRO_Dimension.Query
                    {
                        IsDeleted     = false,
                        Tenant_RefID  = securityTicket.TenantID,
                        Product_RefID = originalProductId
                    });

                    List <ORM_CMN_PRO_Dimension_Value> dimensionValuesToCreate = new List <ORM_CMN_PRO_Dimension_Value>();

                    #region SaveDimensions
                    foreach (var dimensionDb in dimensionsDb)
                    {
                        var dimensionName = dimensionDb.DimensionName;
                        var dimensionID   = dimensionDb.CMN_PRO_DimensionID;

                        ORM_CMN_PRO_Dimension dimensionCopyToCreate = new ORM_CMN_PRO_Dimension();
                        dimensionCopyToCreate.CMN_PRO_DimensionID    = Guid.NewGuid();
                        dimensionCopyToCreate.Creation_Timestamp     = DateTime.Now;
                        dimensionCopyToCreate.DimensionName          = new Dict(ORM_CMN_PRO_Dimension.TableName);
                        dimensionCopyToCreate.IsDeleted              = false;
                        dimensionCopyToCreate.IsDimensionTemplate    = false;
                        dimensionCopyToCreate.Product_RefID          = productCopyToCreate.CMN_PRO_ProductID;
                        dimensionCopyToCreate.Tenant_RefID           = securityTicket.TenantID;
                        dimensionCopyToCreate.OrderSequence          = dimensionDb.OrderSequence;
                        dimensionCopyToCreate.Modification_Timestamp = DateTime.Now;
                        dimensionCopyToCreate.Save(Connection, Transaction);
                        foreach (var lang in defaultLanguages)
                        {
                            dimensionCopyToCreate.DimensionName.UpdateEntry(lang.CMN_LanguageID, dimensionName.Contents.FirstOrDefault().Content);
                        }
                        dimensionCopyToCreate.Save(Connection, Transaction);

                        var dimensionValuesDb = ORM_CMN_PRO_Dimension_Value.Query.Search(Connection, Transaction, new ORM_CMN_PRO_Dimension_Value.Query
                        {
                            Tenant_RefID     = securityTicket.TenantID,
                            IsDeleted        = false,
                            Dimensions_RefID = dimensionID
                        });

                        dimensionValuesDb.ForEach(x => x.Dimensions_RefID = dimensionCopyToCreate.CMN_PRO_DimensionID);
                        dimensionValuesToCreate.AddRange(dimensionValuesDb);
                    }
                    #endregion

                    var productVariantsDb = ORM_CMN_PRO_Product_Variant.Query.Search(Connection, Transaction, new ORM_CMN_PRO_Product_Variant.Query
                    {
                        Tenant_RefID          = securityTicket.TenantID,
                        IsDeleted             = false,
                        CMN_PRO_Product_RefID = originalProductId
                    });



                    #region AssortmentProductSave
                    ORM_CMN_PRO_ASS_AssortmentProduct assortmentProductToCreate = new ORM_CMN_PRO_ASS_AssortmentProduct();
                    assortmentProductToCreate.CMN_PRO_ASS_AssortmentProductID = Guid.NewGuid();
                    assortmentProductToCreate.Ext_CMN_PRO_Product_RefID       = productCopyToCreate.CMN_PRO_ProductID;
                    assortmentProductToCreate.IsDeleted    = false;
                    assortmentProductToCreate.Tenant_RefID = securityTicket.TenantID;
                    assortmentProductToCreate.Save(Connection, Transaction);
                    #endregion

                    #region Assortment Vendor Product Save
                    P_L3AS_SAVP_0004 parameterVendorProductItem = new P_L3AS_SAVP_0004();
                    parameterVendorProductItem.AssortmentProductID = assortmentProductToCreate.CMN_PRO_ASS_AssortmentProductID;
                    parameterVendorProductItem.ProductRefID        = originalProductId;
                    parameterVendorProduct.Add(parameterVendorProductItem);
                    ORM_CMN_PRO_ASS_AssortmentProduct_VendorProduct assortmentVendorProductToCreate = new ORM_CMN_PRO_ASS_AssortmentProduct_VendorProduct();

                    #endregion

                    #region Assortment2Assortment Product save
                    ORM_CMN_PRO_ASS_Assortment_2_AssortmentProduct assortmentToAssortmentProductToCreate = new ORM_CMN_PRO_ASS_Assortment_2_AssortmentProduct();
                    assortmentToAssortmentProductToCreate.AssignmentID = Guid.NewGuid();
                    assortmentToAssortmentProductToCreate.CMN_PRO_ASS_Assortment_Product_RefID = assortmentProductToCreate.CMN_PRO_ASS_AssortmentProductID;
                    assortmentToAssortmentProductToCreate.CMN_PRO_ASS_Assortment_RefID         = Parameter.AssortmentID;
                    assortmentToAssortmentProductToCreate.IsDeleted    = false;
                    assortmentToAssortmentProductToCreate.Tenant_RefID = securityTicket.TenantID;
                    assortmentToAssortmentProductToCreate.Save(Connection, Transaction);
                    #endregion
                    List <ORM_CMN_PRO_Variant_DimensionValue> variantDimensionValueAssignmentToCreate = new List <ORM_CMN_PRO_Variant_DimensionValue>();
                    foreach (var productVariantDb in productVariantsDb)
                    {
                        #region ProductVariant Save
                        ORM_CMN_PRO_ASS_DistributionPrice distributionPriceToCreate = new ORM_CMN_PRO_ASS_DistributionPrice();
                        distributionPriceToCreate.CMN_PRO_ASS_DistributionPriceID = Guid.NewGuid();
                        distributionPriceToCreate.IsDeleted    = false;
                        distributionPriceToCreate.Tenant_RefID = securityTicket.TenantID;
                        distributionPriceToCreate.Save(Connection, Transaction);

                        ORM_CMN_PRO_Product_Variant productVariantToCreate = new ORM_CMN_PRO_Product_Variant();
                        productVariantToCreate.CMN_PRO_Product_VariantID = Guid.NewGuid();
                        productVariantToCreate.CMN_PRO_Product_RefID     = productCopyToCreate.CMN_PRO_ProductID;
                        productVariantToCreate.Creation_Timestamp        = DateTime.Now;
                        productVariantToCreate.Tenant_RefID      = securityTicket.TenantID;
                        productVariantToCreate.ProductVariantITL = "";
                        productVariantToCreate.ProductVariant_DocumentationStructure_RefID = Guid.Empty;
                        productVariantToCreate.VariantName = new Dict(ORM_CMN_PRO_Product_Variant.TableName);
                        productVariantToCreate.IsDeleted   = false;
                        productVariantToCreate.IsStandardProductVariant      = productVariantDb.IsStandardProductVariant;
                        productVariantToCreate.IsImportedFromExternalCatalog = false;
                        productVariantToCreate.Modification_Timestamp        = DateTime.Now;

                        productVariantToCreate.Save(Connection, Transaction);
                        foreach (var lang in defaultLanguages)
                        {
                            productVariantToCreate.VariantName.UpdateEntry(lang.CMN_LanguageID, productVariantDb.VariantName.Contents.FirstOrDefault().Content);
                        }
                        productVariantToCreate.Save(Connection, Transaction);

                        #endregion

                        #region dimensionValuesAssignemnt

                        var assignmentExists = ORM_CMN_PRO_Variant_DimensionValue.Query.Search(Connection, Transaction, new ORM_CMN_PRO_Variant_DimensionValue.Query
                        {
                            Tenant_RefID = securityTicket.TenantID,

                            ProductVariant_RefID = productVariantDb.CMN_PRO_Product_VariantID
                        });
                        foreach (var variantAssignment in assignmentExists)
                        {
                            variantAssignment.IsDeleted            = false;
                            variantAssignment.ProductVariant_RefID = productVariantToCreate.CMN_PRO_Product_VariantID;
                            variantAssignment.Tenant_RefID         = securityTicket.TenantID;

                            variantDimensionValueAssignmentToCreate.Add(variantAssignment);
                        }
                        #endregion

                        #region AddVariantToAssortment
                        ORM_CMN_PRO_ASS_AssortmentVariant assortmentVariantToCreate = new ORM_CMN_PRO_ASS_AssortmentVariant();
                        assortmentVariantToCreate.CMN_PRO_ASS_AssortmentVariantID   = Guid.NewGuid();
                        assortmentVariantToCreate.Ext_CMN_PRO_Product_Variant_RefID = productVariantToCreate.CMN_PRO_Product_VariantID;
                        assortmentVariantToCreate.IsDeleted = false;
                        assortmentVariantToCreate.DistributionPrice_RefID = distributionPriceToCreate.CMN_PRO_ASS_DistributionPriceID;
                        assortmentVariantToCreate.Tenant_RefID            = securityTicket.TenantID;
                        assortmentVariantToCreate.Save(Connection, Transaction);
                        #endregion
                        P_L3AS_SAVV_0040 parameterVendorVariantItem = new P_L3AS_SAVV_0040();
                        parameterVendorVariantItem.AssortmentVariantID    = assortmentVariantToCreate.CMN_PRO_ASS_AssortmentVariantID;
                        parameterVendorVariantItem.ProductVariantID       = productVariantDb.CMN_PRO_Product_VariantID;
                        parameterVendorVariantItem.OrderSequence          = 1;
                        parameterVendorVariantItem.IsDefaultVendorVariant = true;
                        parameterVendorVariants.Add(parameterVendorVariantItem);
                    }

                    #region SaveDimensionValuesAndAssignment
                    foreach (var dimensionValueToCreate in dimensionValuesToCreate)
                    {
                        var valueName = dimensionValueToCreate.DimensionValue_Text;
                        var valueID   = dimensionValueToCreate.CMN_PRO_Dimension_ValueID;

                        ORM_CMN_PRO_Dimension_Value dimensionValueToCreateUpdate = new ORM_CMN_PRO_Dimension_Value();
                        dimensionValueToCreateUpdate.CMN_PRO_Dimension_ValueID = Guid.NewGuid();
                        dimensionValueToCreateUpdate.Creation_Timestamp        = DateTime.Now;
                        dimensionValueToCreateUpdate.DimensionValue_Text       = new Dict(ORM_CMN_PRO_Dimension_Value.TableName);
                        dimensionValueToCreateUpdate.Dimensions_RefID          = dimensionValueToCreate.Dimensions_RefID;
                        dimensionValueToCreateUpdate.IsDeleted              = false;
                        dimensionValueToCreateUpdate.Tenant_RefID           = securityTicket.TenantID;
                        dimensionValueToCreateUpdate.Modification_Timestamp = DateTime.Now;
                        dimensionValueToCreateUpdate.OrderSequence          = dimensionValueToCreate.OrderSequence;
                        dimensionValueToCreateUpdate.Save(Connection, Transaction);
                        foreach (var lang in defaultLanguages)
                        {
                            dimensionValueToCreateUpdate.DimensionValue_Text.UpdateEntry(lang.CMN_LanguageID, valueName.Contents.FirstOrDefault().Content);
                        }
                        dimensionValueToCreateUpdate.Save(Connection, Transaction);

                        var assignments = variantDimensionValueAssignmentToCreate.Where(x => x.DimensionValue_RefID == valueID).ToList();
                        foreach (var assignment in assignments)
                        {
                            ORM_CMN_PRO_Variant_DimensionValue assignmentToSave = new ORM_CMN_PRO_Variant_DimensionValue();
                            assignmentToSave.CMN_PRO_Variant_DimensionValueID = Guid.NewGuid();
                            assignmentToSave.Creation_Timestamp     = DateTime.Now;
                            assignmentToSave.DimensionValue_RefID   = dimensionValueToCreateUpdate.CMN_PRO_Dimension_ValueID;
                            assignmentToSave.IsDeleted              = false;
                            assignmentToSave.Modification_Timestamp = DateTime.Now;
                            assignmentToSave.ProductVariant_RefID   = assignment.ProductVariant_RefID;
                            assignmentToSave.Tenant_RefID           = securityTicket.TenantID;
                            assignmentToSave.Save(Connection, Transaction);
                        }
                    }
                    #endregion
                }
            }
            cls_Save_Assortment_Vendor_Products.Invoke(Connection, Transaction, parameterVendorProduct.ToArray(), securityTicket);
            cls_Save_Assortment_Vendor_Variants.Invoke(Connection, Transaction, parameterVendorVariants.ToArray(), securityTicket);

            return(returnValue);

            #endregion UserCode
        }
        protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L6DTPG_SCL_1016 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_Guid();

            var item = new ORM_CMN_BPT_InvestedWorkTime_ChargingLevel();

            #region Unnecessary

            if (Parameter.CMN_BPT_InvestedWorkTime_ChargingLevelID != Guid.Empty)
            {
                var result = item.Load(Connection, Transaction, Parameter.CMN_BPT_InvestedWorkTime_ChargingLevelID);

                if (result.Status != FR_Status.Success || item.CMN_BPT_InvestedWorkTime_ChargingLevelID == Guid.Empty)
                {
                    var error = new FR_Guid();
                    error.ErrorMessage = "No Such ID";
                    error.Status       = FR_Status.Error_Internal;
                    return(error);
                }


                if (Parameter.ChargingLevelName != null)
                {
                    item.ChangingLevel_Name = Parameter.ChargingLevelName;
                }

                item.Save(Connection, Transaction);

                ORM_CMN_SLS_Price.Query priceQuery = new ORM_CMN_SLS_Price.Query();
                priceQuery.Tenant_RefID          = securityTicket.TenantID;
                priceQuery.IsDeleted             = false;
                priceQuery.CMN_PRO_Product_RefID = item.CMN_PRO_Product_RefID;
                List <ORM_CMN_SLS_Price> prices = ORM_CMN_SLS_Price.Query.Search(Connection, Transaction, priceQuery);
                if (prices != null && prices.Count == 1)
                {
                    ORM_CMN_SLS_Price price = prices[0];
                    price.PriceAmount        = Parameter.PricePerMinute;
                    price.CMN_Currency_RefID = Parameter.CurrencyID;
                    price.Save(Connection, Transaction);
                }
            }

            else
            {
                var structureHeader = new ORM_DOC_Structure_Header();
                structureHeader.Label        = "document_header_for_product";
                structureHeader.Tenant_RefID = securityTicket.TenantID;
                var structureStatusSave = structureHeader.Save(Connection, Transaction);

                ORM_CMN_PRO_Product product = new ORM_CMN_PRO_Product();
                product.Product_Name = Parameter.ChargingLevelName;
                product.Product_DocumentationStructure_RefID = structureHeader.DOC_Structure_HeaderID;
                product.Product_Number = "product_number";
                product.Tenant_RefID   = securityTicket.TenantID;

                product.Save(Connection, Transaction);

                ORM_CMN_BPT_InvestedWorkTime_ChargingLevel charginglevel = new ORM_CMN_BPT_InvestedWorkTime_ChargingLevel();
                charginglevel.ChangingLevel_Name    = Parameter.ChargingLevelName;
                charginglevel.CMN_PRO_Product_RefID = product.CMN_PRO_ProductID;
                charginglevel.Tenant_RefID          = securityTicket.TenantID;

                charginglevel.Save(Connection, Transaction);

                ORM_CMN_SLS_Price price = new ORM_CMN_SLS_Price();
                price.CMN_Currency_RefID    = Parameter.CurrencyID;
                price.CMN_PRO_Product_RefID = product.CMN_PRO_ProductID;
                price.PriceAmount           = Parameter.PricePerMinute;
                price.Tenant_RefID          = securityTicket.TenantID;

                price.Save(Connection, Transaction);
            }

            #endregion

            return(returnValue);

            #endregion UserCode
        }